【发布时间】:2016-07-09 23:34:04
【问题描述】:
在标准python空闲程序中运行tkinter程序时,窗口会显示并且您可以与之交互,但是在pycharm中运行相同的程序会导致程序窗口短暂闪烁然后关闭。
我假设它与mainloop有关,您需要在代码中修改什么以防止程序在pycharm中运行时自动关闭
下面是我的代码中的一段摘录
from tkinter import *
import tkinter
from tkinter import Text, Tk, ttk
import csv
from csv import DictReader
import sys
import os
class GUI:
def __init__(self, root):
....
def main():
global label
root = Tk()
root.title(" My program")
root.geometry("550x330+600+300")
mycolor = '#%02x%02x%02x' % (39, 39, 39) # background color
root.configure(bg=mycolor)
gui = GUI(root)
main()
更新:经过一番折腾,部分原因是我的代码不是最好的(菜鸟),我设法让它工作。对于任何对此感兴趣的人的修改:
from tkinter import *
import csv
from csv import DictReader
import sys
import os
class GUI:
def __init__(self, master):
self.master = master
master.title(" My Programs")
master.geometry("550x330+600+300")
master.iconbitmap('logo.ico')
mycolor = '#%02x%02x%02x' % (39, 39, 39) # background color
master.configure(bg=mycolor)
....... 以上大部分是程序设置的东西,但显示 主要代码在这里
root = Tk()
gui = GUI(root)
root.mainloop()
现在按预期工作
【问题讨论】:
-
我做了,但认为它与我的程序无关。我的有一个带有数据输入框和搜索按钮等的 gui 窗口。我愿意被证明是错误的 :)
-
那么您是否在事件处理程序之后添加了 root.mainloop()(如果有的话)?结果如何?
-
作为一个基本程序,我没有任何事件处理程序,该程序只是在 CSV 文件中搜索特定字符串并在各种文本小部件中显示字段,没有任何闪烁
-
你试过添加root.mainloop()吗?我认为我在上面发布的链接显示了与您的问题相同的问题的解决方案。无论表单上的项目如何,标记为已接受的答案都表明运行 window.mainloop()。你已经调用了你的 TK() 实例 root 而不是 window,所以我认为你应该尝试 root.mainloop()。我实际上并没有使用 pycharm,所以我无法测试,但我还没有看到任何理由说明您的用例与上面的链接有什么不同。
标签: python tkinter pycharm python-idle