我有一个tkinter应用程序,它打开一个消息小部件并显示我的主应用程序所做的一些日志文件的内容。出于某种原因,当我运行扩展只打开窗口或通过命令行运行它时,这可以工作,但是当我的主模块导入时,我收到以下错误: RuntimeError:从不同的公寓调用Tcl
我尝试将代码简单地粘贴到主模块中,但效果相同。我真的不知道发生了什么。消息的代码如下。
from tkinter import *
def msg():
error='Sorry, no logs available.'
string=''
win=Tk()
win.title('Log')
try:
num=0
a=open('C:\\ProgramData\\luck\\log.dat')
lines=a.readlines()
a.close()
except:
string=error
while True:
try:
lines[num]=lines[num].replace('|',' ')
lines[num]=lines[num].strip()
lines[num]=lines[num]+'\n'
num+=1
except IndexError:
break
if string!=error:
for line in lines:
string+=line
msg=Message(win, text=string)
msg.config(bg='gray',font=('arabic',16,'normal'))
msg.pack()
mainloop()
msg()
我会在这里放置主模块的代码,但它很长。
答案 0 :(得分:0)
稍微重新整理您的代码。
create or replace procedure ss_test (x1 number , x2 number , num out number)
as
x number ;
begin
x := 100;
num := (x * (30 - x1 - x2)) / 30;
insert into ss_test_cut (cut) values (trunc (num,2));
end;
如果您导入文件,请致电from tkinter import *
def msg(win):
...
if __name__ == '__main__':
root = Tk()
# root.withdraw() # uncomment after revision below
msg(root)
,其中msg(root)
是已创建的root
对象。当然,将消息对象添加到现有的根窗口可能不是您想要的。因此,修改Tk()
以创建包含该消息的新Toplevel。像
msg
取消注释 top = Toplevel(win)
top.title('Log')
...
msg = Message(top, text=string)
,以便在直接运行文件时看不到空根窗口。