【问题标题】:pysimplegui -button for scrolling all the way downpysimplegui - 用于一直向下滚动的按钮
【发布时间】:2020-12-09 20:22:45
【问题描述】:

我正在使用 pysimplegui 构建一个 gui,其中包含许多输入框,如下所示:

为了给用户带来舒适的导航体验,我添加了向下和向上按钮,其目的是根据按下的按钮将滚动条一直向下或向上移动:

form = sg.Window('analysis').Layout([
                            [sg.Column(layout, size=(width / 3, height / 2), scrollable=True, key = "Column")], 
                            [sg.OK(), sg.Button('Up', key = "up"), sg.Button('Down', key = "down")]
                                ])

这段代码基本上是创建一个窗口,里面有一个列元素,里面有一个预先创建的布局(包含里面的所有输入框),一个预先创建的大小,启用可滚动和一个我想用来控制的键滚动条位置。

另一行包含所有讨论的按钮。

在病房之后,我创建了一个循环来管理触发时的所有事件:

while True:
event, values = form.read()

if(event == sg.WIN_CLOSED):
    break
elif(event == "down"):
    form.Element('Column').set_vscroll_position(1.0)
elif(enent == "up"):
    form.Element('Column').set_vscroll_position(0.0)

按钮未按计划动作,触发时弹出警告:

设置垂直滚动的警告(yview_moveto 失败) 'TkScrollableFrame' 对象没有属性 'yview_moveto

似乎我根据 pysimplegui 的文档做了所有事情,但它不起作用。 任何帮助将不胜感激。

非常感谢革命。

操作系统:Windows 10 Python 版本:3.8.1

【问题讨论】:

    标签: python pysimplegui


    【解决方案1】:

    通过 github 联系 pysimplegui 和其他贡献者后,警告的解释如下:

    列是特殊的,需要完成一些额外的代码来操作它们的滚动条。没想到要记录/处理这个元素。代码在“小部件”上运行,而 Column 元素本身并不是一个独立的小部件,就像其他一些带有滚动条的小部件一样。

    以 tkinter 调用和 trates 的形式提供了更多解决方案:

    import PySimpleGUI as sg
    
    font = ('Courier New', 16)
    text = '\n'.join(chr(i)*50 for i in range(65, 91))
    column = [[sg.Text(text, font=font)]]
    
    layout = [
        [sg.Column(column, size=(800, 300), scrollable=True, key = "Column")],
        [sg.OK(), sg.Button('Up', key = "up"), sg.Button('Down', key = "down")],
    ]
    
    window = sg.Window('Demo', layout, finalize=True)
    
    while True:
        event, values = window.read()
        if event == sg.WIN_CLOSED:
            break
        elif event == "down":
            window['Column'].Widget.canvas.yview_moveto(1.0)
        elif event == "up":
            window['Column'].Widget.canvas.yview_moveto(0.0)
    
    window.close()
    

    【讨论】:

    猜你喜欢
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2019-08-26
    • 1970-01-01
    • 2021-09-01
    相关资源
    最近更新 更多