如何解决PySimleGUI 如何将元素彼此相邻放置,以便它们之间没有空间?
是否可以将元素(例如 Button
s)放在彼此相邻的位置,以便在 PySimleGUI
中它们之间没有空格?
这是我的代码:
import time
import multiprocessing
import PySimpleGUI as sg
def game_window():
game_color = "#82a459"
mana = 10
potion = False
sg.theme('Green')
row1 = [ [sg.Text("z",font="Any 100",text_color=game_color)],[sg.Text("zzzzzzzzzzz",text_color=game_color)] ]
row2 = [ [sg.pin(sg.Text(f" {mana} ",key="_text_",font="Any 20"))],[sg.pin(sg.Button(key="_mana_",image_filename=r"mana256.png",border_width=0.1,button_color=game_color,mouSEOver_colors=game_color))] ]
row3 = [ [sg.pin(sg.Text("zzzzzzz",text_color=game_color))] ]
row32 = [ [sg.pin(sg.Text("zzz",font="Any 10",text_color=game_color))] ]
row4 = [ [sg.Button(image_filename=r"plank.png",border_width=0)] ]
row5 = [ [sg.Button(image_filename=r"plank.png",border_width=0,pad=((15,0),(0,0))),sg.Button(image_filename=r"manapotionbuyz.png",key="_manabuy_",0)))] ]
layout = [ [sg.Frame(layout=row1,title="",border_width=0.1),sg.Frame(layout=row2,),sg.Frame(layout=row3,sg.Frame(layout=row32,sg.Frame(layout=row5,border_width=0.1)] ]
window = sg.Window('Wizard Clash',layout,element_padding=((0,0)),margins=(0,border_depth=0).finalize()
window.Maximize()
while True:
event,values = window.read(timeout=1000)
if event == sg.WIN_CLOSED or event == 'Cancel':
break
if event == "_mana_":
window["_mana_"].Update(image_filename=r"mana356.png")
mana = mana + 1
time.sleep(0.1)
window["_text_"].Update(f" {mana} ")
window["_mana_"].Update(image_filename=r"mana256.png")
if event == "Ok":
potion = True
mana = mana - 10
window["_text_"].Update(f" {mana} ")
if potion == True:
mana = mana + 2
window["_text_"].Update(f" {mana} ")
window.close()
if __name__ == '__main__':
game_window()
正如你所看到的,我试图将按钮放在一起,但它们之间仍然有一个空格:
解决方法
需要将边距和填充归零。
可以create blank images in imagemagick作为替补,但这些只是猜测。
convert -size 10x100 xc:red plank.png
convert -size 32x32 xc:green manapotionbuyz.png
convert -size 32x32 xc:blue mana356.png
convert -size 32x32 xc:white mana256.png
At the minimum、像素大小对于那些本来就很好...
#! /usr/bin/env python3
## sudo apt install fonts-freefont-ttf
import PySimpleGUI as sg
def game_window():
smallfontname = 'FreeSeriff'
smallfontsize = 11
smallfontstyle = 'italic'
smallfont = smallfontname,smallfontsize,smallfontstyle
mediumfontname = 'FreeSans'
mediumfontsize = 22
mediumfontstyle = 'normal'
mediumfont = mediumfontname,mediumfontsize,mediumfontstyle
largefontname = 'FreeMono'
largefontsize = 33
largefontstyle = 'bold'
largefont = largefontname,largefontsize,largefontstyle
game_color = '#82a459'
text_color = '#224499'
blank = ' '
nada = ( 0,0 )
mana = 10
potion = False
sg .theme( 'Green' )
row1 = [ [ sg .Text( 'z',font = largefont,text_color = text_color ) ],[ sg .Text( 'zzzzzzzzzzz',text_color = text_color ) ] ]
row2 = [ [ sg .pin( sg .Text( f'{blank} {mana} {blank}',key = '_text_',font = mediumfont ) ) ],[ sg .pin( sg .Button( key = '_mana_',image_filename = 'mana256.png',border_width = 0.1,button_color = game_color,mouseover_colors = game_color ) ) ] ]
row3 = [ [ sg .pin( sg .Text( 'zzzzzzz',text_color = text_color ) ) ] ]
row4 = [ [ sg .pin( sg .Text( 'zzz',font = smallfont,text_color = text_color ) ) ] ]
row5 = [ [ sg .Button( image_filename = 'mana356.png',border_width = 0 ) ] ]
row6 = [ [ sg .Button( image_filename = 'plank.png',border_width = 0,pad = nada ),sg .Button( image_filename = 'manapotionbuyz.png',key = '_manabuy_',pad = nada ) ] ]
layout = [ [ sg .Frame( layout = row1,title = '',border_width = 0.1 ),sg .Frame( layout = row2,sg .Frame( layout = row3,sg .Frame( layout = row4,sg .Frame( layout = row5,sg .Frame( layout = row6,] ]
window = sg .Window( 'Wizard Clash',layout,element_padding = nada,margins = nada,border_depth = 0 )
window .finalize()
## window .Maximize()
while True:
event,values = window .read( timeout = 250 ) ## quarter-second between events
if event == sg .WIN_CLOSED or event == 'Cancel':
break
if event == '_mana_':
window[ '_mana_' ] .Update( image_filename = 'mana356.png' )
mana = mana +1
window[ '_text_' ] .Update( f'{blank} {mana} {blank}' )
window[ '_mana_' ] .Update( image_filename = 'mana256.png' )
if event == 'Ok':
potion = True
mana = mana -10
window[ '_text_' ] .Update( f'{blank} {mana} {blank}' )
if potion == True:
mana = mana +2
window[ '_text_' ] .Update( f'{blank} {mana} {blank}' )
window .close( )
if __name__ == '__main__':
game_window( )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。