python - tKinter 和 PySimpleGUI 中的帧大小问题
问题描述
我正在尝试创建一个 4 部分显示,其下方的框架跨越两列。我曾尝试在 tKinter 和现在的 PySimpleGUI 中执行此操作。我可以“接近”但不正确。当我为显示插入占位符时,框架的大小被完全忽略。我将为此插入我的确切代码,以便您可以看到,即使每个帧中的帧大小相同(最后一个除外),这些帧都显示不同的大小。
在我将对象添加到框架中之前,框架大小保持不变。
# 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
,使用里面的选项size
来设置大小。sg.Column
sg.Frame
演示代码
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
Column 内的所有元素都将具有此理由 'left'、'right'、'center' 是有效值
和有一些重要的东西justification
,element_justification
它意味着与最大宽度的元素对齐。
这里的所有框架或列都具有相同的大小
justification
工作,但相同尺寸看起来都一样。element_justification
工作但与最大宽度的元素对齐。例如,如果您设置element_justification='right'
,“10”将与“Heat Status”的右侧对齐,并非所有元素都与列对齐。(现在的状态)
推荐阅读
- algorithm - 多行斜接的算法
- python - sphinx 中同一文档中各部分的内部链接
- amazon-web-services - 状态机将不接受输入路径
- java - 我可以在 OpenXava 的 @Calculation 注释中使用 Java 代码吗?
- powerbi - Power BI 中的复杂筛选器
- elasticsearch - 请求 ElasticSearch 中特定对象字段的未展平映射
- javascript - 渲染不是函数 updateContextConsumer
- python - 在不同的代码 Python 中访问另一个代码
- angular - 使用 AngularFire 的 Google Analytics(分析)同意模式
- r - 在 R 中跨列应用函数