执行时的空白tkinter窗口

时间:2014-11-08 06:27:18

标签: python tkinter

我正在编写一个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()

1 个答案:

答案 0 :(得分:2)

我重新编写了代码以使其正常工作。

更改内容:您有2个变量rootapp,其中一个变量创建了空白窗口。我将其更改为仅使用单个变量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()