[问题] 如果我结合tkinter和wxpython然后应用程序。窗口会冻结。 因此,请分享一个提示。 我认为这与线程有关,但我无法完全理解它。
[CODE]
from Tkinter import *
master = Tk()
def getFiles():
import wx
app = wx.App(False)
locale = wx.Locale(wx.LANGUAGE_ENGLISH)
frame = wx.Frame(None, wx.ID_ANY, "test", style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN)
frame.Center()
frame.SetBackgroundColour('LIGHTGREY')
frame.SetSize(200,400)
# Create grid manager instance
sizer = wx.GridBagSizer()
# Create Label for: Available testcase
entry = wx.StaticText( frame, wx.ID_ANY, u"Available testcases:", wx.DefaultPosition, wx.DefaultSize, 0 )
sizer.Add(entry,(1,1),(1,1),wx.EXPAND)
frame.SetSizerAndFit(sizer)
frame.Show(True) # Show the frame.
app.MainLoop()
b = Button(master, text="OK", command=lambda : getFiles())
b.pack()
master.mainloop()
[注] 我需要wxpython因为:GenericDirCtrl对象。 我没有发现一个相同的obj:tkinter,ttk,tix。继续调查
答案 0 :(得分:4)
你不能把tkinter和wxPython结合起来。它们都是具有自己的事件循环的GUI工具包,它们基本上是从窗口小部件处理事件的无限循环。你不能一次运行两个无限循环。
但是,也许没有理由同时进行这两项工作。如果您需要tkinter中不存在的小部件,只需使用wxPython构建整个应用程序。
答案 1 :(得分:0)
可以将Tkinter与wxPython组合为独立模块,例如以使用其高级打印功能。尝试这样的一行:
os.popen('PP4 \ wxprint_2.py“ {}”'。format(fname))#OK!
(wxprint_2.py是我的wxPython独立打印模块)
唯一的问题是,在我的PC上,打印模块可能在启动时突然爆炸而没有任何警告或线索,可能是因为超出了内存限制。