【问题标题】:Pycharm automatically closes a program, python idle doesntPycharm自动关闭程序,python idle没有
【发布时间】: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


【解决方案1】:

Python 有一个-i 启动选项,它使 Python 在程序完成时进入交互式移动,而不是退出。 IDLE 执行代码就像在终端输入python -i file.py 一样。这允许人们通过在 Shell 中输入代码以交互方式探索实时 gui。

从这个问题和flyingmeatball 引用的问题来看,PyCharm 似乎没有使用或模拟-i。所以必须用 root.mainloop 完成一个 tkinter 程序才能看到任何东西。除非在不破坏应用程序的情况下添加一个退出主循环的按钮,否则将无法与交互式语句进行交互。 (同样,这完全基于 SO 上发布的内容,因为我没有使用 PyCharm 的经验。)

【讨论】:

    猜你喜欢
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    相关资源
    最近更新 更多