从桌面运行时,Python 3.2脚本不起作用和/或导入tkinter

乌鸦座

我对此感到很困惑,但是答案可能很简单,根本看不到:

我有一系列的python模块,它们可以在python解释器中正常工作,但是从GUI情况运行时什么也没发生。我尝试创建.desktop文件,添加shebang,将权限更改为777并重命名.pyw为所有模块。单个测试模块可以正常工作,因此我知道这不是错字错误。

如果单击主模块.pyw文件,然后从系统对话框中单击“运行”,则什么也没有发生。同样,.py文件(和“.desktop通过”菜单)也没有任何反应。这是我的代码的开始:

#!/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,仍然没有任何反应,这使我相信tkinter出于某种原因未加载。

有任何想法吗?

乌鸦座

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

* *我用了最后两行,现在可以正常使用了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章