gpt4 book ai didi

Python Canvas 和 Grid Tkinter

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:50 29 4
gpt4 key购买 nike

我想在网格中有一个 Canvas ,但我想将输入和标签与 Canvas 分开,怎么办?我可以在不干扰输入和标签的情况下放置 Canvas ,所以它看起来很“可爱”。现在,如果我将 Canvas 放在第 0,3 行,那么就会有一个巨大的空间,如果周围有另一个小部件,则会留下很大的空白或使小部件变长。 我想将 Canvas 放在右边,将其他小部件放在左边,而不会在任何地方留下很大的空间
任何帮助将不胜感激

    import tkinter as tk
from tkinter import *
class Gui():
def __init__(self, root):
self.root=root
self.entry = tk.Entry(root)
stvar=tk.StringVar()
stvar.set("one")
self.option=tk.OptionMenu(root, stvar, "one", "two", "three")

self.canvas=tk.Canvas(root, width=300, height=200, background='white')
self.canvas.grid(row=0,column=2)
label1=Label(self.root, text="Figure").grid(row=0,column=0, sticky="nw")
label2=Label(self.root, text="X").grid(row=1,column=0, sticky="w")
label3=Label(self.root, text="Y").grid(row=2,column=0, sticky="w")
self.option.grid(row=0,column=1,sticky="nwe")
entry = Entry(self.root).grid(row = 1,column = 1,sticky = E+ W)
entry1 = Entry(self.root).grid(row = 2,column = 1, sticky = E)
Button1=Button(self.root,text="Draw").grid(row = 3,column = 1, sticky = "we")
figure1=self.canvas.create_rectangle(80, 80, 120, 120, fill="blue")

#Grid.columnconfigure(self.root,1,weight=1, size=200)
if __name__== '__main__':
root=tk.Tk()
gui=Gui(root)
root.mainloop()

最佳答案

您可以创建一个 Frame 并将所有非 Canvas 小部件放入其中。它们在框架网格中的位置将忽略框架外的小部件的定位。

import tkinter as tk
from tkinter import *
class Gui():
def __init__(self, root):
self.root=root
self.entry = tk.Entry(root)
stvar=tk.StringVar()
stvar.set("one")

self.canvas=tk.Canvas(root, width=300, height=200, background='white')
self.canvas.grid(row=0,column=1)

frame = Frame(self.root)
frame.grid(row=0,column=0, sticky="n")

self.option=tk.OptionMenu(frame, stvar, "one", "two", "three")
label1=Label(frame, text="Figure").grid(row=0,column=0, sticky="nw")
label2=Label(frame, text="X").grid(row=1,column=0, sticky="w")
label3=Label(frame, text="Y").grid(row=2,column=0, sticky="w")
self.option.grid(row=0,column=1,sticky="nwe")
entry = Entry(frame).grid(row = 1,column = 1,sticky = E+ W)
entry1 = Entry(frame).grid(row = 2,column = 1, sticky = E)
Button1=Button(frame,text="Draw").grid(row = 3,column = 1, sticky = "we")
figure1=self.canvas.create_rectangle(80, 80, 120, 120, fill="blue")

#Grid.columnconfigure(self.root,1,weight=1, size=200)
if __name__== '__main__':
root=tk.Tk()
gui=Gui(root)
root.mainloop()

结果:

enter image description here

关于Python Canvas 和 Grid Tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20149483/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com