0

我有一個簡單的代碼塊,當用戶按下按鈕時顯示圖像。當我用.py擴展名保存腳本時,在後臺有控制檯,所以我決定將其保存爲.pyw以隱藏它。這是我的代碼;如何在用Tkinter顯示圖像時隱藏控制檯

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。但是,當我點擊按鈕時,在打開圖像之前,我會看到控制檯很短的時間,然後消失。我怎麼能避免這一點,我想隱藏控制檯完全,

回答

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只是比別人慢,所以你看到控制檯更長的時間。

0

U可以使用下面的代碼:`

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()