這是我第一次使用 tkinter 使用 python 進行 GUI 嘗試,但我無法弄清楚問題所在:
這是我的初始代碼:
from tkinter import *
root_app = Tk()
root_app.title("Test App")
#Question 1 - best car brand
v1 = StringVar()
v1.set(None)
Label(root_app, text="What is your favorite car barnd?\n", font=('Helvatical bold',16), fg='#ff0').pack()
r1 = Radiobutton(root_app, text='Mazda', value='Mazda', variable=v1).pack()
r2 = Radiobutton(root_app, text='BMW', value='BMW', variable=v1).pack()
r3 = Radiobutton(root_app, text='Ford', value='Ford', variable=v1).pack()
#Question 2 - best sports brand
v1 = StringVar()
v1.set(None)
Label(root_app, text="What is your favorite sports barnd?\n", font=('Helvatical bold',16), fg='#ff0').pack()
r1 = Radiobutton(root_app, text='Nike', value='Nike', variable=v1).pack()
r2 = Radiobutton(root_app, text='Adidas', value='Adidas', variable=v1).pack()
r3 = Radiobutton(root_app, text='Puma', value='Puma', variable=v1).pack()
root_app.mainloop()
它可以作業,但單選按鈕垂直顯示:
我嘗試在我的代碼中使用side='left'
配置:pack()
r1 = Radiobutton(root_app, text='Mazda', value='Mazda', variable=v1).pack(side='left')
r2 = Radiobutton(root_app, text='BMW', value='BMW', variable=v1).pack(side='left')
r3 = Radiobutton(root_app, text='Ford', value='Ford', variable=v1).pack(side='left')
但我得到了一個凌亂的框架,無法弄清楚如何在每個標簽下水平修復它:
uj5u.com熱心網友回復:
pack()
最好將所有內容保存在一列或一行中。
您可能需要使用Frame
保持radiobuttons
在一行中,并將此框架與其他元素保持在一列中。
import tkinter as tk # PEP8 `import *` is not preferred
root = tk.Tk()
root.title("Test App")
# Question 1 - best car brand # PEP8: one space after `#` (and two spaces before `#` if there is code before `#`)
v1 = tk.StringVar(root)
v1.set(None)
tk.Label(root, text="What is your favorite car barnd?").pack(pady=10, padx=10)
frame_1 = tk.Frame(root)
frame_1.pack()
tk.Radiobutton(frame_1, text='Mazda', value='Mazda', variable=v1).pack(side='left')
tk.Radiobutton(frame_1, text='BMW', value='BMW', variable=v1).pack(side='left')
tk.Radiobutton(frame_1, text='Ford', value='Ford', variable=v1).pack(side='left')
# Question 2 - best sports brand # PEP8: one space after `#` (and two spaces before `#` if there is code before `#`)
v2 = tk.StringVar(root) # you have to use other name for variable
v2.set(None)
tk.Label(root, text="What is your favorite sports barnd?").pack(pady=10, padx=10)
frame_2 = tk.Frame(root)
frame_2.pack(pady=(0,10)) # add pad only below
tk.Radiobutton(frame_2, text='Nike', value='Nike', variable=v2).pack(side='left')
tk.Radiobutton(frame_2, text='Adidas', value='Adidas', variable=v2).pack(side='left')
tk.Radiobutton(frame_2, text='Puma', value='Puma', variable=v2).pack(side='left')
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505341.html