[英]Running `mainloop()` in its own thread or process?
我有一個已在控制台中成功運行的程序,並且想添加GUI。 但是,當我嘗試添加它們時, mainloop()
之后沒有任何代碼運行(除非我關閉了Tkinter窗口)。 我用Google搜索它,發現了這個問題 。 但是,老實說,我不知道JAB在這個答案中在說什么。 =)
在mainloop()
運行之后,我需要對代碼做些什么來制作代碼? 僅出於上下文考慮,這是我的代碼現在的樣子:
from Tkinter import *
from tkFileDialog import *
import os.path
import shutil
import sys
import tempfile
from zipfile import ZipFile
import subprocess
root = Tk()
root.wm_title("Pages to PDF")
root.wm_iconbitmap('icon.ico')
w = Label(root, text="Please choose a .pages file to convert.")
def callback():
print "click!"
global y
y = askopenfilename(parent=root, defaultextension=".pages")
#print(y)
#y.pack()
b = Button(root, text="Browse", command=callback)
w.pack()
b.pack()
root.mainloop()
def view_file(filepath):
subprocess.Popen(filepath, shell=True).wait()
PREVIEW_PATH = 'QuickLook/Preview.pdf' # archive member path
#pages_file = raw_input('Enter the path to the .pages file in question: ')
pages_file = y
pages_file = os.path.abspath(pages_file)
filename, file_extension = os.path.splitext(pages_file)
if file_extension == ".pages":
tempdir = tempfile.gettempdir()
temp_filename = os.path.join(tempdir, PREVIEW_PATH)
with ZipFile(pages_file, 'r') as zipfile:
zipfile.extract(PREVIEW_PATH, tempdir)
if not os.path.isfile(temp_filename): # extract failure?
sys.exit('unable to extract {} from {}'.format(PREVIEW_PATH, pages_file))
final_PDF = filename + '.pdf'
shutil.copy2(temp_filename, final_PDF) # copy and rename extracted file
# delete the temporary subdirectory created (along with pdf file in it)
shutil.rmtree(os.path.join(tempdir, os.path.split(PREVIEW_PATH)[0]))
print('Check out the PDF! It\'s located at "{}".'.format(final_PDF))
view_file(final_PDF) # see Bonus below
else:
sys.exit('Sorry, that isn\'t a .pages file.')
我希望GUI保持打開狀態的原因是,我最終希望立即在GUI中顯示終端輸出的零件。
您需要做的基本上是形成一個類(這是一種更好的做法)並在mainloop
調用該類
from Tkinter import *
from tkFileDialog import *
import os.path
import shutil
import sys
import tempfile
from zipfile import ZipFile
import subprocess
class uiclass():
def __init__(self,root):
b = Button(root, text="Browse", command=self.callback)
w = Label(root, text="Please choose a .pages file to convert.")
w.pack()
b.pack()
def callback(self):
print "click!"
global y
y = askopenfilename(parent=root, defaultextension=".pages")
self.view_file(y)
def view_file(self,filepath):
subprocess.Popen(filepath, shell=True).wait()
PREVIEW_PATH = 'QuickLook/Preview.pdf' # archive member path
#pages_file = raw_input('Enter the path to the .pages file in question: ')
pages_file = y
pages_file = os.path.abspath(pages_file)
filename, file_extension = os.path.splitext(pages_file)
if file_extension == ".pages":
tempdir = tempfile.gettempdir()
temp_filename = os.path.join(tempdir, PREVIEW_PATH)
with ZipFile(pages_file, 'r') as zipfile:
zipfile.extract(PREVIEW_PATH, tempdir)
if not os.path.isfile(temp_filename): # extract failure?
sys.exit('unable to extract {} from {}'.format(PREVIEW_PATH, pages_file))
final_PDF = filename + '.pdf'
shutil.copy2(temp_filename, final_PDF) # copy and rename extracted file
# delete the temporary subdirectory created (along with pdf file in it)
shutil.rmtree(os.path.join(tempdir, os.path.split(PREVIEW_PATH)[0]))
print('Check out the PDF! It\'s located at "{}".'.format(final_PDF))
self.view_file(final_PDF) # see Bonus below
else:
sys.exit('Sorry, that isn\'t a .pages file.')
if __name__ == '__main__':
root = Tk()
uiclass(root)
root.wm_title("Pages to PDF")
root.mainloop()
在方法本身中調用其他方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.