【问题标题】:blank tkinter window when executing执行时空白 tkinter 窗口
【发布时间】:2014-11-08 16:59:41
【问题描述】:

我正在编写一个 Tkinter,它主要由一个复选框和包含保存选项的文件菜单组成。

问题: 它有 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()

【问题讨论】:

  • 为什么txt1的master是root?

标签: python tkinter


【解决方案1】:

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

更改的内容:您有 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()

【讨论】:

  • 谢谢 PM 2Ring!我错过了你提到的那个,现在在上面修复它。
猜你喜欢
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 2012-12-17
  • 1970-01-01
相关资源
最近更新 更多