我有一个Python 3.4.2的tkinter gui,其中有各种按钮,用户输入字段和文本字段。一切正常,除了我似乎必须点击Python shell(IDLE)并从gui中取出以响应按钮按下来更新字段。单击shell时立即更新。我从http://ubuntuforums.org/showthread.php?t=1156637复制了这个tkintergui,这在我的Mac上提出了同样的问题。如果在GUI中单击IDLE shell或非常慢的更新
,则立即更新#!/usr/bin/python
from tkinter import *
from tkinter.filedialog import *
class SimpleEdApp:
def __init__(self, parent=Tk()):
self.mainWindow = (parent)
self.mainWindow.title("Simple Editor")
self.mainWindow.resizable(0, 0)
self.make_mnu()
self.make_txt()
def make_txt(self):
self.text = Text(self.mainWindow, width = 80, height = 40, background = 'white')
self.scrollY = Scrollbar(self.mainWindow, orient = VERTICAL, command = self.text.yview, troughcolor = 'white')
self.text["yscrollcommand"] = self.scrollY.set
self.scrollY.pack(side = RIGHT, fill = Y)
self.text.pack(expand = TRUE, fill = BOTH)
def make_mnu(self):
self.menubar = Menu(self.mainWindow)
self.filemenu = Menu(self.menubar, tearoff = 0)
self.filemenu.add_command(label = "Open", command = self.file_open)
self.filemenu.add_command(label = "Save as...", command = self.file_save)
self.filemenu.add_separator()
self.filemenu.add_command(label = "Exit", command = self.mainWindow.destroy)
self.menubar.add_cascade(label = "File", menu = self.filemenu)
self.mainWindow.config(menu = self.menubar)
def file_open(self):
filename =askopenfilename(filetypes=[("pythonfiles","*.py"),("tclfiles","*.tcl"),("allfiles","*")])
f = open(filename, 'r')
data = f.read()
f.close()
self.text.delete(1.0, END)
self.text.insert(1.0, data)
def file_save(self):
filename =asksaveasfilename(filetypes=[("pythonfiles","*.py"),("tclfiles","*.tcl"),("allfiles","*")])
f = open(filename, 'w')
data = self.text.get(1.0, END)
f.write(data)
f.close()
app = SimpleEdApp()
app.mainWindow.mainloop()
感谢正确实施
答案 0 :(得分:1)
您的代码没有任何问题。这看起来像是IDLE中的一个错误。
在评论中,您询问了如何在IDLE之外运行程序。为此,打开提示并键入命令python myfile.py
,其中myfile.py
是您的python文件的名称(假设“python”在您的PATH中)。
*注意:根据系统中安装的内容,您可能需要使用python3
而不是python
。