python 表 set_vscroll_postion 不起作用

问题描述 投票:0回答:1

使用表运行 Python pysimplegui 我不太确定将我的 .set_vscroll_postion(1.0)

我的主要问题是我有大量数据,我希望用户看到最新的数据。

我想我可以:

  1. 反转我的表格内容(如果可能)。 2.让滚动条帮助显示最新的
headings = ['Time Stamp','(MB)TempF', '(MB)Humidity', 'etc']
measured_values_array = [
    ['Begin Info']
]


layout = [
        [gui.Table(values=measured_values_array, 
        headings=headings, 
        max_col_width=35,
                    auto_size_columns=True,
                    display_row_numbers=False,
                    justification='left',
                    num_rows=10,
                    key='CLK',
                    row_height=18,alternating_row_color="grey",
                    )]
    ]
 

window = gui.Window('Display Values Differant Methods', layout, margins=(250, 250),font=('Arial', 12), finalize=True)


ui.Table.set_vscroll_postition(1.0)

while True:

    event, values = window.read(timeout=100)

    if event in (None, gui.WIN_CLOSED):
        break

    if event == gui.TIMEOUT_EVENT:
        time.sleep(2)
        ComPort = serial.Serial("COM3", baudrate=9600,bytesize=8,parity='N',stopbits=1, timeout=1,)
        Temphex = b'\x01\x03\x00\x00\x00\x02\xC4\x0B'
        ComPort.write(Temphex)
        temp = ComPort.read(7)
        t=" ".join(["{:02x}".format(x) for x in temp])
        t1=(( int( (t[9:11]+t[12:15]),16))/100)
        tf = round((t1*(9/5))+32,2)
        ComPort.close()
        
        ComPort = serial.Serial("COM3", baudrate=9600,bytesize=8,parity='N',stopbits=1, timeout=1,)
        Humhex = b'\x01\x03\x00\x01\x00\x02\x95\xCB'
        ComPort.write(Humhex)
        hum = ComPort.read(7)
        h=" ".join(["{:02x}".format(x) for x in hum])
        h1=(( int( (h[9:11]+h[12:15]),16))/100)
        ComPort.close()
        
        current_time = datetime.datetime.now().strftime('%m-%d-%y %H:%M:%S%p')
                
        currentTemp = str(tf)
        currentHum = str(h1)
        measured_values_array.append([current_time,tf,h1])     
        window['CLK'].update(measured_values_array)
     

window.close()

python scrollbar pysimplegui
1个回答
0
投票

没有提供滚动的方法,您可以调用

window['CLK'].widget.yview_moveto(1)
滚动到表格末尾。

演示代码

from random import randint
from datetime import datetime
import PySimpleGUI as sg

def now():
    return datetime.now().strftime('%m-%d-%y %H:%M:%S%p')

def new_data():
    return [now(), randint(0, 50), randint(60, 85), '']

headings = ['Time Stamp','(MB)TempF', '(MB)Humidity', 'etc']
measured_values_array = [new_data() for i in range(10)]

sg.set_options(font=("Courier New", 12))
layout = [
    [sg.Table(
        values=measured_values_array,
        headings=headings,
        auto_size_columns=False,
        col_widths=[22, 14, 14, 20],
        justification='center',
        num_rows=10,
        alternating_row_color="grey",
        key='CLK',
    )],
    [sg.Push(), sg.Button("New Data")],
]
window = sg.Window('Display Values Differant Methods', layout, finalize=True)

while True:

    event, values = window.read()

    if event == sg.WIN_CLOSED:
        break

    elif event == "New Data":
        measured_values_array.append(new_data())
        window['CLK'].update(measured_values_array)
        window['CLK'].widget.yview_moveto(1)

window.close()
© www.soinside.com 2019 - 2024. All rights reserved.