我正在学习 tkinter,并创建了一个简单的转换器。我已经创建了一个画布并将我所有的小工具都放在上面。我的主窗口是 800x640,画布是 400x320。完成后,我想使用网格命令并为我的画布找到一个我喜欢的位置。但是,当我执行 canvas.grid(row=rownr, column=columnnr) 时,无论我在 grid 方法中为 row 和 col 提供什么值,画布都会转到主窗口上的 row=0, column=0 。如果我添加另一个小部件,例如在 (0,0) 处的主窗口上的标签,然后我尝试将画布移动到 (0,1) 然后画布转到该位置。但是,如果画布是我主窗口上唯一的小部件,则它根本不会使用网格方法移动。请帮助我理解为什么会发生这种情况。这是整个代码:
from tkinter import *
from tkinter.ttk import *
from tkinter import messagebox
from tkinter import Menu
def convert_meters():
# get value from entry and convert it to all
result_in_meters = int(label1_1.get())# integer value
result_in_km.set(float(result_in_meters/1000))
result_in_dem.set(float(result_in_meters*10))
result_in_miles.set(float(result_in_meters*0.000621371))
result_in_yards.set(float(result_in_meters*1.09361))
def get_value_and_convert():
if(combo1.get()=="meters"):
convert_meters()
elif(combo1.get()=="centimeters"):
convert_centimeters()
elif(combo1.get()=="millimeters"):
convert_millimeters()
elif(combo1.get()=="inches"):
convert_inches()
else:
result_in_km.set("0")
result_in_dem.set("0")
result_in_miles.set("0")
result_in_yards.set("0")
window = Tk()
window.title("Converter")
result = IntVar()
result_in_km = StringVar()
result_in_dem = StringVar()
result_in_miles = StringVar()
result_in_yards = StringVar()
canvas1 = Canvas(window, width=400, height=320, bd=1, highlightthickness=1, relief='ridge')
canvas1.grid(row=2, column=2)
#### Things to convert #####
label1 = Label(canvas1, text="Convert ", width=8)
label1_1 = Entry(canvas1, width=2) # between label1 and combobox
combo1 = Combobox(canvas1, width=8)
combo1['values'] = ("meters","centimeters","millimeters","inches")
combo1.current(0)
label2 = Label(canvas1, text=" to:", width=10)
############################
这是我尝试用网格定位画布的行(在声明画布之后):
canvas1.grid(row=2, column=2)
感谢您的阅读!
慕雪6442864
为什么不能把照片移动到画布上?
相对于以前窗口位置移动
做2寸照片的时候 为什么移动照片的时候 照片移动 画布不移动
设置窗口无法弹出来
相关分类