PySimpleGUI组合值返回(Python GUI)

PySimpleGUI组合值返回(Python GUI),python,python-3.x,user-interface,anaconda,pysimplegui,Python,Python 3.x,User Interface,Anaconda,Pysimplegui,这让我抓狂,我很确定这是一个很容易解决的问题,不管怎样,我找不到任何解决办法,请帮忙 我试图用python制作一个gui,其中内容更新为下拉列表中的不同元素,在开始时,我根据第一个下拉选项制作内容,并默认为它 现在,当我打开gui时,内容不会根据所选内容刷新,而是保持不变 这是我的密码: #importing necessary libraries and frameworks from firebase import firebase import PySimpleGUI as sg #de

这让我抓狂,我很确定这是一个很容易解决的问题,不管怎样,我找不到任何解决办法,请帮忙

我试图用python制作一个gui,其中内容更新为下拉列表中的不同元素,在开始时,我根据第一个下拉选项制作内容,并默认为它

现在,当我打开gui时,内容不会根据所选内容刷新,而是保持不变

这是我的密码:

#importing necessary libraries and frameworks
from firebase import firebase
import PySimpleGUI as sg

#declaring required variables
firebase_url = "https://***********.firebaseio.com/"
bicycle_1_url = '*******'
bicycle_2_url = '*******'
bicycle_3_url = '*******'

#setting firebase object with url to database
firebase = firebase.FirebaseApplication(firebase_url,None)
lockStatus = firebase.get(bicycle_1_url,'lockStatus')
current_cycle = 1
#Setting the change status button to dynamic text
if lockStatus == 'locked' :
    label_change_status ='UnLock Bicycle'
else :
    label_change_status ='Lock Bicycle'


#Declaring theme for the UI
sg.theme('DarkPurple4')

#Making the layout of GUI window (Every square bracket represents a row)
layout = [
         [sg.Text('',size=(35,1))],
         [sg.Text('Cycle ID: ',size=(10,1)), sg.Combo(['CY001','CY002','CY003'],size= 
            (6,1),key='cycle_id')],
         [sg.Text(lockStatus,key='label_lockStatus')],
         [sg.Button(label_change_status,key='ChangeStatus'),sg.Button('Exit')],
 ]

#Declaring your window
window = sg.Window('Lock Status Changer', layout)

#declaring event loop for the window
while True:
 event, values = window.read()
 print(event, values)
 if event == sg.WIN_CLOSED or event == 'Exit':
     break
 if event == 'cycle_id':
     cycle_no = window['cycle_id']
     if cycle_no == 0:
         current_cycle = 1
         lockStatus = firebase.get(bicycle_1_url,'lockStatus')
         window['label_lockStatus'].update[lockStatus]
     if cycle_no == 1:
         current_cycle = 2
         lockStatus = firebase.get(bicycle_2_url,'lockStatus')
         window['label_lockStatus'].update[lockStatus]
     if cycle_no == 2:
         current_cycle = 3
         lockStatus = firebase.get(bicycle_3_url,'lockStatus')
         window['label_lockStatus'].update[lockStatus]
 if event == 'ChangeStatus':
     #Change the lock status of selected bicycle
     if current_cycle == 1 :
             if lockStatus == 'locked' :
                 firebase.put(bicycle_1_url,'lockStatus','unlocked')
                 lockStatus == 'unlocked'
                 label_change_status =='Lock Bicycle'
             else :
                 firebase.put(bicycle_1_url,'lockStatus','locked')
                 lockStatus == 'locked'
                 label_change_status =='Unlock Bicycle'
             
     if current_cycle == 2 : 
             if lockStatus == 'locked' :
                 firebase.put(bicycle_2_url,'lockStatus','unlocked')
                 lockStatus == 'unlocked'
                 label_change_status =='Lock Bicycle'
             else :
                 firebase.put(bicycle_2_url,'lockStatus','locked')
                 lockStatus == 'locked'
                 label_change_status =='Unlock Bicycle'
             
      if current_cycle == 3 : 
             if lockStatus == 'locked' :
                 firebase.put(bicycle_3_url,'lockStatus','unlocked')
                 lockStatus == 'unlocked'
                 label_change_status =='Lock Bicycle'
             else :
                 firebase.put(bicycle_3_url,'lockStatus','locked')
                 lockStatus == 'locked';
                 label_change_status =='Unlock Bicycle'
     
     #Updating the lockstatus to the window                                
     window['ChangeStatus'].update(values[label_change_status])

#closing window when loop ends
window.close() 
我应该更改什么才能让它知道我已更新了我的选择?

您可以从
窗口使用。read()

写入
值['cycle\u id']
而不是
窗口['cycle\u id']

您可以从
窗口使用。read()


values['cycle\u id']
而不是
window['cycle\u id']

试试window[combo].Get()@matanh-oh我最终尝试了这一点,这确实有效,很抱歉回复太晚了。当我再次查看您的代码时,我发现您可以将
window['cycle\u id']
替换为
values['cycle\u id'.
是的,我可以,无论如何,这个项目已经结束很久了,我最终只是重新构建了我的UI来解决这个问题。谢谢你的解决方案,虽然我已经将其发布为应答窗口[combo]。Get()@matanh oh我最终尝试了这一点,这确实有效,很抱歉回复太晚,但当我再次查看你的代码时,我发现你可以将
窗口['cycle\u id']
替换为
值['cycle\u id']
是的,我可以,无论如何,这个项目已经结束很久了,我最终只是重新构建了我的UI来解决这个问题。谢谢你的解决方案,尽管我已经将此作为答案发布