簡體   English   中英

tKinter 和 PySimpleGUI 中的幀大小問題

[英]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' 是有效值

justificationelement_justification有一些重要的東西,這意味着 alignment 到最大寬度的元素。

這里的所有框架或列都具有相同的大小

  • justification工作,但對於相同的尺寸看起來都一樣。
  • element_justification工作,但與最大寬度的元素對齊。 例如,如果您設置element_justification='right' ,“10”將與“Heat Status”的右側對齊,而不是所有元素都與列對齊。 (現在的 state)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM