我对此确实感到困惑,但答案可能很简单,只是看不出来:
我有一系列 Python 模块,它们在 Python 解释器中运行良好,但在 GUI 环境下运行时却没有任何反应。我尝试创建一个 .desktop 文件,添加 shebang,将.pyw
所有模块的权限更改为 777 并重命名为。单个测试模块本身运行良好,所以我知道这不是拼写错误。
如果我单击主模块.pyw
文件并从系统对话框中单击“运行”,则什么也不会发生。同样,文件.py
(和.desktop
via 菜单)也不会发生任何事情。这是我的代码的开头:
#!/usr/bin/python3
import tkinter as tk, imp, sys
root = tk.Tk()
msg = tk.messagebox
sdg = tk.simpledialog
import capitaliser_cfg as cfg, fileio as io
imp.reload(cfg) ; imp.reload(io)
### GO AND GET COUNTY LIST ####
# Nb: attach to config for simplicity
cfg.counties = io.getfilelist("counties.txt", "London")
if not type(cfg.counties)==list:
k = msg.showerror(cfg.version, cfg.counties)
root.destroy()
root.mainloop()
### GO AND GET DICTIONARY ####
cfg.tempdict = [[],[],[]]
cfg.spelldict = io.getdictionary("addressdict.txt","roda","Road")
if not type(cfg.spelldict)==dict:
k = msg.showerror(cfg.version, cfg.spelldict)
root.destroy()
root.mainloop()
import thinbutton as tb, labelradio as lr, fieldblock as fb, bigbutton as bb
import textblock as tx, padding as pd, widget_tools as wt
import capitaliser_mth as mth
import capitaliser_bnd as bnd
imp.reload(tb) ; imp.reload(lr) ; imp.reload(fb) ; imp.reload(bb)
imp.reload(tx) ; imp.reload(pd) ; imp.reload(wt) ;
imp.reload(mth)
imp.reload(bnd)
如果我put k = msg.showerror("xxxx","yyyy")
按照这条线sdg = tk.simpledialog
,仍然没有发生任何事情,这让我相信特金特由于某种原因未加载。
有人有什么想法吗?
答案1
Furas 在 Stackoverflow 板上提供了以下解决方案:
对于 Python 2,请尝试:
import tkMessageBox
import tkSimpleDialog
msg = tkMessageBox
sdg = tkSimpleDialog
或者更简单:
import tkMessageBox as msg
import tkSimpleDialog as sdk
对于 Python 3,请尝试:
from tkinter import messagebox
from tkinter import simpledialog
msg = messagebox
sdg = simpledialog
或者更简单:
from tkinter import messagebox as msg
from tkinter import simpledialog as sdg
** 我使用了最后两行,现在它运行完美。