[英]Frame size issues in tKinter and PySimpleGUI
我正在嘗試創建一個 4 部分顯示,其下方的框架跨越兩列。 我曾嘗試在 tKinter 和現在的 PySimpleGUI 中執行此操作。 我可以“接近”但不正確。 當我為顯示插入占位符時,框架的大小被完全忽略。 我將為此插入我的確切代碼,以便您可以看到,即使每個幀中的幀大小相同(最后一個除外),這些幀都顯示不同的大小。
在我將 object 添加到框架之前,框架尺寸保持不變。
# Imports
import PySimpleGUI as sg
sg.theme('DarkGrey9')
#Global Values
global smoker
global probe
global req_smoker
global req_probe
#smoker will be coded to read the temperature of internal smoker probe
smoker = 180
#probe will be coded to read the temperature of meat probe
probe = 100
req_smoker = int(input("Enter Desired Smoker Temperature: "))
req_probe = int(input("Enter Desired Finish Temperature: "))
if smoker < req_smoker and probe < req_probe:
#activate heating element
print("Heating")
elif smoker >= req_smoker and probe < req_probe:
#turn off heating element
print("maintain heat")
elif probe >= req_probe:
req_smoker = req_probe
print("Your meat is done!")
col1 = sg.Column([
[sg.Frame('Smoker Temperature', [[sg.Text("10", font=["Helvetica", 100], text_color="#FF0000", justification="center")],
[sg.Text("Heat Status", font=[48], justification="center", )]], size=(200, 300))],
[sg.Frame('Req_Smoker Temperature', [[sg.Text("200", font=["Helvetica", 150])]], size=(200, 300))]
])
col2 = sg.Column([
[sg.Frame('Probe Temperature', [[sg.Text("300", font=["Helvetica", 120])]], size=(200,300))],
[sg.Frame('Finish Temperature', [[sg.Text("40", font=["Helvetica", 180])]], size=(200, 300))]
])
col3 = sg.Column([
[sg.Frame("Options", [[sg.Button('Data-log'), sg.Button("Close"), ]], element_justification="center", size=(500, 100))]
])
layout = [[col1, col2], [col3]]
window = sg.Window('Smoker Display', layout, grab_anywhere=True, )
while True:
event, values = window.read()
print(event, values)
if event == sg.WIN_CLOSED:
break
window.close()
我錯過了什么?
選項size
現在不適用於sg.Frame
,請使用sg.Column
內部的sg.Frame
的選項size
來設置大小。
演示代碼
import PySimpleGUI as sg
sg.theme('DarkGrey9')
size = (300, 200)
column1 = [
[sg.Text("10", font=("Helvetica", 50), text_color="#FF0000", justification="center")],
[sg.Text("Heat Status", font=[48], justification="center", )]
]
column2 = [
[sg.Text("300", font=["Helvetica", 100])]
]
column3 = [
[sg.Text("200", font=["Helvetica", 120])]
]
column4 = [
[sg.Text("40", font=["Helvetica", 150])]
]
column5 = [
[sg.Button('Data-log'), sg.Button("Close")]
]
layout = [
[sg.Frame('Smoker Temperature', [[sg.Column(column1, size=size)]]),
sg.Frame('Probe Temperature' , [[sg.Column(column2, size=size)]])],
[sg.Frame('Req_Smoker Temperature', [[sg.Column(column3, size=size)]]),
sg.Frame('Finish Temperature', [[sg.Column(column4, size=size)]])],
[sg.Frame('Options', [[sg.Column(column5, size=size)]])],
]
window = sg.Window('Smoker Display', layout, grab_anywhere=True, )
while True:
event, values = window.read()
print(event, values)
if event == sg.WIN_CLOSED:
break
window.close()
[更新] sg.Column
justification
為 Column 本身設置理由。 注意包含 Column 的整行都會受到影響element_justification
列內的所有元素都將具有此對齊方式 'left'、'right'、'center' 是有效值 justification
和element_justification
有一些重要的東西,這意味着 alignment 到最大寬度的元素。
這里的所有框架或列都具有相同的大小
justification
工作,但對於相同的尺寸看起來都一樣。element_justification
工作,但與最大寬度的元素對齊。 例如,如果您設置element_justification='right'
,“10”將與“Heat Status”的右側對齊,而不是所有元素都與列對齊。 (現在的 state)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.