我使用相同格式的框架,但它没有在界面中显示,希望有人能告诉我解决方案,谢谢。
class Interface(Frame):
def __init__(self,parent=None):
Frame.__init__(self,parent)
self.master.title("measurement")
self.grid()
# fix the size and parameters of widget
self.master.geometry("700x400+100+50")
self.master.Frame1 = Frame(self,relief=GROOVE,bg='white')
self.master.Frame1.grid(column=1,row=9)
self.can =Canvas(self, bg="ivory", width =200, height =150)
self.master.canvas = Canvas(self.master, width=150, height=120, background='snow')
ligne1=self.master.canvas.create_line(75, 0, 75, 120)
if __name__ == "__main__":
window = Tk()
window.resizable(False, False)
Interface(window).mainloop()
答案 0 :(得分:1)
我无法弄清楚为什么你有2 Canvas
,但问题是你没有把它们放在他们各自的父母身上。我删除了许多看似不必要的代码,并重新构建了代码以使其更符合逻辑:
class Interface(Frame):
def __init__(self, parent):
self.parent = parent
super().__init__(self.parent)
self.Frame1 = Frame(self, relief=GROOVE)
self.Frame1.grid()
self.canvas = Canvas(self.Frame1, bg="ivory", width=200, height=150)
self.canvas.grid()
self.canvas.create_line(75, 0, 75, 120)
if __name__ == "__main__":
root = Tk()
# Tk configurations are not relevant to
# the Interface and should be done out here
root.title('Measurement')
root.geometry('700x400+100+50')
root.resizable(False, False)
Interface(root).pack()
root.mainloop()
答案 1 :(得分:0)
我想我并不是真的了解你的问题,你没有看到你的画面因为你没有任何小部件,所有
org.glassfish.jersey.jackson.JacksonFeature.class
PS:使用import tkinter as tk
class Interface(tk.Frame):
def __init__(self,parent=None):
tk.Frame.__init__(self,parent)
self.master.title("measurement")
self.grid(row=0, column=0)
# fix the size and parameters of widget
self.master.geometry("700x400+100+50")
self.master.Frame1 = tk.Frame(self,relief='groove',bg='white')
self.master.Frame1.grid(column=1,row=9)
labelExemple =tk.Label(self.master.Frame1, text="Exemple")
labelExemple.grid(row=0,column=0)
self.can = tk.Canvas(self, bg="ivory", width =200, height =150)
self.master.canvas = tk.Canvas(self.master, width=150, height=120, background='snow')
self.ligne1=self.master.canvas.create_line(75, 0, 75, 120)
if __name__ == "__main__":
window = tk.Tk()
window.resizable(False, False)
Interface(window).mainloop()
代替import tkinter as tk
答案 2 :(得分:0)
这几行代码有几个问题,几乎都与你使用网格的方式有关:
sticky
选项,因此小部件不会扩展以填充它们所占用的空间weight
,因此tkinter不知道如何分配未使用的空间grid
或pack
将画布放在框架内,因此框架的默认尺寸为1x1 最大的问题是你试图立刻解决所有这些问题。只要您一次只尝试解决一个问题,布局问题通常很容易解决。
首先从Interface中删除所有小部件。然后,给那个框架一个独特的背景颜色,然后尝试让它填充窗口(假设这最终是你想要它做的)。另外,删除root.resizable(False, False)
。它很少是用户想要的东西(他们喜欢能够控制他们的窗口),而且它使调试布局问题的工作更加困难。
在您显示Interface
的实例后,添加一个小部件并确保它也显示出来。然后添加下一个,下一个,一次添加一个小部件并观察它的行为方式。