Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pysimplegui将按钮与窗口中心对齐_Python_User Interface_Pysimplegui - Fatal编程技术网

Python 使用pysimplegui将按钮与窗口中心对齐

Python 使用pysimplegui将按钮与窗口中心对齐,python,user-interface,pysimplegui,Python,User Interface,Pysimplegui,在我的应用程序中,我试图将我的按钮、文本和输入放在窗口的中心。我使用PySimpleGUI设计按钮。为了对齐中心,我在代码上使用了justification='center'属性。但它仍然不适合窗口的中心 import PySimpleGUI as sg sg.theme('DarkAmber') layout = [ [sg.Text('Enter the value',justification='center',size=(100,1))], [sg.

在我的应用程序中,我试图将我的按钮、文本和输入放在窗口的中心。我使用PySimpleGUI设计按钮。为了对齐中心,我在代码上使用了
justification='center'
属性。但它仍然不适合窗口的中心

import PySimpleGUI as sg
sg.theme('DarkAmber')  
layout = [ 
        [sg.Text('Enter the value',justification='center',size=(100,1))],
        [sg.Input(justification='center',size=(100,1))],
        [sg.Button('Enter','center',size=(100,1))]
     ]


window = sg.Window('My new window', layout, size=(500,300), grab_anywhere=True)

while True:
    event, values = window.read()   # Read the event that happened and the values dictionary
    print(event, values)
    if event == None or event == 'Exit':     # If user closed window with X or if user clicked "Exit" button then exit
        break
    if event == 'Button':
      print('You pressed the button')
    window.close()
我使用的代码是

import PySimpleGUI as sg
from tkinter import * 
sg.theme('DarkAmber')  
layout = [ 
        [sg.Text('Enter the value',justification='center')],
        [sg.Input(justification='center')],
        [sg.Button('Enter','center')]
     ]


  window = sg.Window('My new window', layout, size=(500,300), grab_anywhere=True)

 while True:
event, values = window.read()   # Read the event that happened and the values dictionary
print(event, values)
if event == sg.WIN_CLOSED or event == 'Exit':     # If user closed window with X or if user clicked "Exit" button then exit
    break
if event == 'Button':
  print('You pressed the button')
window.close()
上述代码输出
如何将文本、按钮和输入置于窗口的中心?

此代码将文本、按钮和输入置于窗口的中心

import PySimpleGUI as sg
sg.theme('DarkAmber')  
layout = [ 
        [sg.Text('Enter the value',justification='center',size=(100,1))],
        [sg.Input(justification='center',size=(100,1))],
        [sg.Button('Enter','center',size=(100,1))]
     ]


window = sg.Window('My new window', layout, size=(500,300), grab_anywhere=True)

while True:
    event, values = window.read()   # Read the event that happened and the values dictionary
    print(event, values)
    if event == None or event == 'Exit':     # If user closed window with X or if user clicked "Exit" button then exit
        break
    if event == 'Button':
      print('You pressed the button')
    window.close()

我想这就是你要找的

window=sg.window('My new window',布局,元素\'c')

编辑-垂直居中

在窗口中垂直居中布局是一件相当麻烦的事。所需的是当窗口展开时将展开的两个元素。这是一个演示程序,是PySimpleGUI GitHub上演示的一部分

将PySimpleGUI导入为sg
"""
在窗口中使柱居中
解决一种非常特殊的布局。
如果你想让一些东西在窗口中居中,这是一个很好的方法
这里的“诀窍”是:
*布局的第一行有一个垂直展开的文本元素
*包含列的行具有水平展开的文本元素
此展开文本元素将导致Column元素居中
经允许使用
"""
def main():
列要居中=[[sg.Text(“我的窗口”)],
[sg.Input(key='-IN-')],
[sg.Text(大小=(12,1),键='-OUT-')],
[sg.按钮('Go')、sg.按钮('Exit')]]
布局=[[sg.Text(key='-EXPAND-',font='ANY 1',pad=(0,0))],从顶部展开的东西
[sg.Text('',pad=(0,0),key='-EXPAND2-'),#从左边展开的东西
sg.柱(柱居中,垂直对齐居中,对正居中,k='-C-')]]
window=sg.window('windowtitle',layout,resizeable=True,finalize=True)
窗口['-C-']。展开(True,True,True)
窗口['-EXPAND-']。展开(True,True,True)
窗口['-EXPAND2-']。展开(真、假、真)
为True时:#事件循环
事件,值=window.read()
打印(事件、值)
如果事件==sg.WIN\u关闭或事件==退出:
打破
如果事件=='Go':
窗口['-OUT-']。更新(值['-IN-'])
window.close()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()

对于容器
sg.Column
,最好的选项应该是
element\u justification='center'
,可能不是所有的元素都需要对齐窗口的中心

将PySimpleGUI导入为sg
sg.主题(“达坎伯”)
布局_列=[
[sg.Text('输入值',对正='中心')],
[sg.Input(对正='center',key='-Input-')],
[sg.按钮('Enter')]
]
布局=[[sg.Column(布局列,元素对齐='center')]]
window=sg.window('My new window',layout,grab\u anywhere=True)
尽管如此:
事件,值=window.read()
打印(事件、值)
如果事件==sg.WIN\u关闭或事件==退出:
打破
如果事件=='按钮':
打印('您按下了按钮')
window.close()

如果您想更直接地控制元素的显示位置,可以在几乎所有元素(按钮、文本、输入等)中使用
pad
关键字

有两种有效格式:

  • pad=(,)
    其中
    pad[0]
    是向左和向右填充 而
    pad[1]
    是元素上方和下方的填充
  • pad=(,),(,)
    第一个元组所在的位置 向左(第一个元素)和向右(第二个元素)填充,以及 第二个元组在上面(第一个)和下面(第二个)填充
因此,要使用
pad
关键字将代码示例中的元素居中,可以执行以下操作:

import PySimpleGUI as sg
sg.theme('DarkAmber')
layout = [
        [sg.Text('Enter the value', pad=(190, 0))],
        [sg.Input(justification='center', pad=(75, 0))],
        [sg.Button('Enter', pad=(215, 0))]
     ]


window = sg.Window('My new window', layout,
                   size=(500, 300), grab_anywhere=True)

while True:
    # Read the event that happened and the values dictionary
    event, values = window.read()
    print(event, values)
    # If user closed window with X or if user clicked "Exit" button then exit
    if event == sg.WIN_CLOSED or event == 'Exit':
        break
    if event == 'Button':
        print('You pressed the button')
    window.close()

注:上述代码与原始代码略有改动,以符合PEP8标准

结果是:


@BharGav Desai-该代码不会将按钮居中,而是将文本居中放置在全宽按钮内。如果您将按钮设置为eg大小(10,1),它仍然位于屏幕左侧。需要元素_justion='c'将按钮置于屏幕中央,但这会使所有内容居中。理想情况下,我希望能够在一个框架内使按钮居中,但在同一窗口内的不同框架内使文本输入左对齐和/或右对齐。应该是错误的代码,
sg.Button
的第二个参数用于
按钮类型
。所有元素都没有对齐窗口的中心。可以查看项目GitHub上的演示程序“demo\u Layout\u Vertical\u Centered.py”。另外,您还可以在整个布局列表中使用
sg.Column(Layout,justification='c')
对单个元素进行对齐。并非每件事都需要居中论证。