使用Tkinter显示图像时如何隐藏控制台

时间:2016-03-12 19:50:02

标签: python tkinter python-imaging-library python-3.5 windows-console

我有一个简单的代码块,当用户按下按钮时会显示图像。当我使用.py扩展名保存脚本时,后台有控制台,因此我决定将其保存为.pyw以隐藏它。这是我的代码;

from tkinter import *
from PIL import Image

def open_image():
    im = Image.open("tobi.jpg")
    im.show()

root = Tk()
root.geometry("800x600+400+300")

buton = Button(root)
buton.config(text = "Show the image", command = open_image, activebackground = "yellow", bg = "lightgreen")
buton.pack()

mainloop()

我在背景中看不到cmd因为我将其保存为.pyw。但是,当我单击按钮时,在打开图像之前我会看到控制台很短的时间,然后它就会消失。我怎么能避免这种情况,我想完全隐藏控制台,

2 个答案:

答案 0 :(得分:0)

我不知道如何通过纯tk执行此操作,但如果子进程是一个选项,那么您可以执行以下操作。不是一个很好的解决方案,因为你必须使用子进程模块才能打开图像......但无论如何....

import tkinter as tk
import subprocess as s

root = tk.Tk()

def open_image():

    s.call(["tobi.jpg"], shell=True)

button = Button(root)
button.config(text="Show the Image", command=open_image, activebackground="yellow", bg="lightgreen")
button.pack()
root.mainloop()

或者您可以使用os并使用os.system("start my_file_name.jpg") (假设这里有窗户)

使用os.system控制台将显示但只是非常简短。

真的做同样的事情,用PIL打开比其他人慢,所以你看到控制台的时间更长。

答案 1 :(得分:0)

你可以使用以下代码:`

import win32console
import win32gui
win=win32console.GetConsoleWindow()       # For closing command window
win32gui.ShowWindow(win,0)

这将在开始时关闭cmd窗口,并且不会再次显示。 cmd窗口最初可以显示很短的时间,作为闪烁,然后它将不会显示。你可以保存.py扩展名。

这里是完整的代码:`

from Tkinter import *
from PIL import Image
import win32console
import win32gui

win=win32console.GetConsoleWindow()       # For closing command window
win32gui.ShowWindow(win,0)

def open_image():
    im = Image.open("tobi.jpg")
    im.show()

root = Tk()
root.geometry("800x600+400+300")

buton = Button(root)
buton.config(text = "Show the image", command = open_image, activebackground     = "yellow", bg = "lightgreen")
buton.pack()

mainloop()