嗨,我是编程新手,如果这是一个明显的错误,我道歉。我在Mac OsX El Capitan上使用python 3.5在tkinter上写了一个gui。这是迄今为止的代码:
from tkinter import *
from tkinter import ttk
class GUI(object):
def __init__(self, master):
master.title("Title")
master.resizable(False, False)
self.frame1 = ttk.Frame(master)
self.frame1.pack()
ttk.Label(text="Organism").grid(row=1, column=0)
self.organism_picker = ttk.Combobox(self.frame1, values=("Drosophila melanogaster",
"Danio rerio",
"Caenorhabditis elegans",
"Rattus norvegicus",
"Mus musculus",
"Homo sapiens"))
self.organism_picker.grid(row=2, column=0)
ttk.Label(text="Core gene symbol:").grid(row=3, column=0)
self.core = ttk.Entry(self.frame1)
self.core.grid(row=4, column=0)
root = Tk()
gui = GUI(root)
root.mainloop()
当我运行此程序时,程序进入主循环,但gui窗口永远不会出现且启动器没有响应。 我尝试重新安装python 3,安装了ActiveTcl,尝试使用ActivePython。但它没有奏效。
提前感谢大家的答案。
答案 0 :(得分:3)
您不应该使用pack()和grid(),因为这将生成几何管理器冲突,如此错误所述:
_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack
尝试改变:
self.frame1.pack()
为:
self.frame1.grid()
在这种情况下,我建议使用pack整体,因为这是一个相当简单的布局。请参阅this guide:
何时使用包管理器
与网格管理器相比,包管理器有点受限, 但是在一些但很常见的情况下使用起来要容易得多:
将小部件放在框架(或任何其他容器小部件)中,并且具有 它填满整个框架在每个框架的顶部放置一些小部件 其他并排放置一些小部件
最后:
注意:请勿在同一主窗口中混合网格和打包。 Tkinter会 愉快地度过余生,试图协商解决方案 两位经理都很满意。而不是等待,杀死 应用程序,再看看你的代码。一个常见的错误是 为某些小部件使用错误的父级。
答案 1 :(得分:1)