我正在编写一个Tkinter,它包含一个复选框和包含Save Option的文件菜单。
问题: 它有2个tkinter而不是一个。一个是空白GUI,另一个是我的复选框,文本框,文件和保存。
如何避免空白GUI?
我的代码:
from Tkinter import *
import Tkinter
from tkFileDialog import askopenfile, asksaveasfile
import tkFileDialog
class myproject(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self)
self.textbox()
self.checkbox2()
def textbox(self):
self.txt1 = Tkinter.Text(root, borderwidth=3, relief="sunken", height=4,width=55)
self.txt1.config(font=("consolas", 12), undo=True, wrap='word')
self.txt1.grid(row=0, column=1, sticky="nsew", padx=2, pady=2)
def checkbox2(self): #self.checkbox
checkbox = Tkinter.Checkbutton(root, text = " ")
checkbox.grid(column=1,row=2)
def file_save(self):
f = asksaveasfile(mode='w', defaultextension=".txt")
root = Tkinter.Tk()
menubar = Menu(root)
root.configure(menu=menubar)
filemenu = Menu(menubar,tearoff=0)
menubar.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="Save", command=myproject.file_save)
app = myproject(None)
app.mainloop()
答案 0 :(得分:2)
我重新编写了代码以使其正常工作。
更改内容:您有2个变量root
和app
,其中一个变量创建了空白窗口。我将其更改为仅使用单个变量root
,该变量在开始时初始化为myproject
。
我没有在您的函数中使用root
,而是将其更改为self
,因为self
也继承自Tkinter.Tk
。
在__init__
函数中,我删除了未使用的变量parent
。
更新:同样在调用filemenu.add_command时,它被更改为传入root.file_save而不是myproject.file_save。谢谢PM 2Ring。
from Tkinter import *
import Tkinter
from tkFileDialog import askopenfile, asksaveasfile
import tkFileDialog
class myproject(Tkinter.Tk):
def __init__(self):
Tkinter.Tk.__init__(self)
self.textbox()
self.checkbox2()
def textbox(self):
self.txt1 = Tkinter.Text(self, borderwidth=3, relief="sunken", height=4,width=55)
self.txt1.config(font=("consolas", 12), undo=True, wrap='word')
self.txt1.grid(row=0, column=1, sticky="nsew", padx=2, pady=2)
def checkbox2(self): #self.checkbox
checkbox = Tkinter.Checkbutton(self, text = " ")
checkbox.grid(column=1,row=2)
def file_save(self):
f = asksaveasfile(mode='w', defaultextension=".txt")
root = myproject()
menubar = Menu(root)
root.configure(menu=menubar)
filemenu = Menu(menubar,tearoff=0)
menubar.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="Save", command=root.file_save)
root.mainloop()