2016-03-22 53 views
0

在標準python空閒程序中運行tkinter程序時,窗口會顯示,您可以與之交互,但在pycharm中運行相同的程序會導致程序窗口短暫閃爍然後關閉。Pycharm會自動關閉一個程序,python idle does not

我假設它與主循環做,在pycharm運行時,你有什麼需要在你的代碼,以防止程序自動關閉修改

從我的代碼的excert如下

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() 

作品現在預期

+0

你看這裏嗎? http://stackoverflow.com/questions/27637197/tkinter-window-closes-automatically-after-python-program-has-run-in-pycharm – flyingmeatball

+0

我做了,但沒想到它與我的程序有關。我有一個帶有數據輸入框和搜索按鈕的GUI窗口等等。我打開被證明是錯誤的,但是:) – LesM76

+0

所以你在事件處理程序(如果有的話)之後添加root.mainloop()?結果是什麼? – flyingmeatball

回答

1

Python有一個-i啓動選項,它使Python在程序完成時進入交互式移動,而不是退出。 IDLE執行代碼,就好像在終端輸入python -i file.py一樣。這允許通過在Shell中輸入代碼來交互式地探索活gui。

從這個問題以及flymeatball引用的一個,似乎PyCharm不使用或模擬-i。所以必須用root.mainloop完成一個tkinter程序才能看到任何東西。除非在不破壞應用程序的情況下添加一個按鈕來退出主循環,否則將無法與交互語句交互。 (同樣,這完全基於SO上發佈的內容,因爲我沒有使用PyCharm的經驗。)