PySimleGUI 如何将元素彼此相邻放置,以便它们之间没有空间?

如何解决PySimleGUI 如何将元素彼此相邻放置,以便它们之间没有空间?

是否可以将元素(例如 Buttons)放在彼此相邻的位置,以便在 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()

正如你所看到的,我试图将按钮放在一起,但它们之间仍然有一个空格:

screenshot showingpadding

解决方法

需要将边距和填充归零。

plank

可以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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?