tkinter消息在单独运行时有效,但从我的主模块运行时它失败

时间:2017-09-13 03:04:54

标签: python tkinter

我有一个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()

我会在这里放置主模块的代码,但它很长。

1 个答案:

答案 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) ,以便在直接运行文件时看不到空根窗口。