Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 编辑PySimpleGUI中的设计元素和按钮故障_Python_Pandas_Pysimplegui - Fatal编程技术网

Python 编辑PySimpleGUI中的设计元素和按钮故障

Python 编辑PySimpleGUI中的设计元素和按钮故障,python,pandas,pysimplegui,Python,Pandas,Pysimplegui,我正在构建一个DB比较器工具,它根据用户输入进行比较,并使用Datacompy显示结果 它分为两个窗口 从用户处获取详细信息 将比较结果提供给用户 如何创建下拉框。 在FileBrowse元素下面的第二个窗口中,我想创建一个下拉列表,其中保存用户将要上载的excel文件中的值 Excel将包含两列(表名和SQL) 我想将所有表名放入下拉框 我怎样才能继续呢 代码运行得非常好,但这是我正在努力的设计,也是使工具变得更加完美的几个悬而未决的问题 我想要实现的设计: 若你们在附件中看到我正在努力实现

我正在构建一个DB比较器工具,它根据用户输入进行比较,并使用Datacompy显示结果

它分为两个窗口

  • 从用户处获取详细信息
  • 将比较结果提供给用户
  • 如何创建下拉框。 在FileBrowse元素下面的第二个窗口中,我想创建一个下拉列表,其中保存用户将要上载的excel文件中的值

    Excel将包含两列(表名和SQL) 我想将所有表名放入下拉框

    我怎样才能继续呢

    代码运行得非常好,但这是我正在努力的设计,也是使工具变得更加完美的几个悬而未决的问题

    我想要实现的设计:

    若你们在附件中看到我正在努力实现的目标,但它似乎不适合我

    以下是我的开放性问题:

  • 我怎样才能根据我的想象进行设计
  • 第二个窗口上的“退出”按钮不起作用它不关闭窗口,而是进入无响应状态
  • 如何对文本框进行对齐
  • 这是我的代码(请原谅我的缩进,它有点错,因为我复制并粘贴在这里):

    编辑:

  • 我还可以在工具中添加什么
  • 如何即兴编写代码

  • 不确定您的问题是什么,以下代码仅供参考

    sg.Text
    设置具有相同值的选项
    size
    ,以保持所有
    sg.Text
    具有相同的大小。 在
    sg.Window
    中添加选项
    modal=True
    ,以保持父窗口不接受键盘和鼠标事件

    将PySimpleGUI导入为sg
    def popup():
    布局=[
    [sg.Text('File 1')、sg.InputText()、sg.FileBrowse()],
    [sg.Output(大小=(80,25),键='-Output-')],
    [sg.Submit('Compare')、sg.Button('Exit')],
    ]
    window=sg.window('File Compare',layout,modal=True)
    尽管如此:
    事件,值=window.read()
    打印(事件、值)
    如果事件发生(sg.WINDOW_关闭,“退出”):
    打破
    window.close()
    返回
    sg.theme(“暗蓝色3”)
    sg.set_选项()
    DB_信用卡_one=[
    [sg.Text(“UserName”,size=(10,1)),sg.In(size=(25,1),enable_events=True,key=“-uname_db1-”,
    [sg.Text(“Password”,size=(10,1)),sg.In(size=(25,1),enable_events=True,key=“-pword_db1-”,
    [sg.Text(“主机名”,大小=(10,1)),sg.In(大小=(25,1),enable_events=True,key=“-hname_db1-”,
    [sg.Text(“Server”,size=(10,1)),sg.In(size=(25,1),enable_events=True,key=“-sname_db1-”,
    [sg.Text(“Port”,size=(10,1)),sg.In(size=(25,1),enable_events=True,key=“-Port_db1-”,
    [sg.B('Test Con1',key='B1')],
    ]
    db_creds_two=[
    [sg.Text(“UserName”,size=(10,1)),sg.In(size=(None,5),enable_events=True,key=“-uname_db2-”,
    [sg.Text(“Password”,size=(10,1)),sg.In(size=(None,5),enable_events=True,key=“-pword_db2-”,
    [sg.Text(“主机名”,大小=(10,1)),sg.In(大小=(无,5),enable_events=True,key=“-hname_db2-”,
    [sg.Text(“Server”,size=(10,1)),sg.In(size=(None,5),enable_events=True,key=“-sname_db2-”,
    [sg.Text(“Port”,size=(10,1)),sg.In(size=(None,5),enable_events=True,key=“-Port_db2-”,
    [sg.B('Test Con2',key='B2')],
    ]
    布局前缀=[
    [
    sg.柱(DB_creds_one),
    sg.VSeperator(),
    sg.柱(db_creds_2),
    ],
    [sg.Output(大小=(80,25),键='-Output-')],
    [sg.提交(“继续”),sg.按钮(“退出”),
    ]
    window=sg.window(“DB比较器”,布局前缀)
    尽管如此:
    事件,值=window.read()
    如果事件==sg.WIN\u已关闭或事件=='Exit'或事件=='Cancel':
    secongwindow=False
    打破
    elif事件==“继续”:
    结果=弹出()
    window.close()
    
    如果您的问题只出现在GUI上,最好将您的代码减少为仅关于GUI。解决了最后两个问题(在
    编辑中
    )更适合类似的门户。第二个窗口有按钮
    退出
    ,但我没有看到关闭它的代码。我没有看到
    compare\u window.close()
    代码中的缩进错误。我看不出你是如何打开第二个窗口的——它没有任何功能。所以我无法运行它来查看问题。
    import PySimpleGUI as sg
    import re
    import datacompy
    import cx_Oracle
    import pandas as pd
    
    supportedextensions = ['csv','xlsx', 'xlsm' ,'json']
    
    
    
    
    
    #Database Details Layout   
    DB_creds_one = [
        [ sg.Text("UserName"), sg.In(size=(25, 1), enable_events=True, key="-uname_db1-") ],
        [ sg.Text("Password"), sg.In(size=(25, 1), enable_events=True, key="-pword_db1-") ],
        [ sg.Text("Hostname"), sg.In(size=(25, 1), enable_events=True, key="-hname_db1-") ],
        [ sg.Text("Server"), sg.In(size=(25, 1), enable_events=True, key="-sname_db1-") ],
        [ sg.Text("Port"), sg.In(size=(25, 1), enable_events=True, key="-port_db1-") ],
        [ sg.B('Test Con1', key='B1') ],
        ]
    db_creds_two = [
        [ sg.Text("UserName"), sg.In(size=(None,5),enable_events=True, key="-uname_db2-") ],
        [ sg.Text("Password"), sg.In(size=(None,5), enable_events=True, key="-pword_db2-") ],
        [ sg.Text("Hostname"), sg.In(size=(None,5), enable_events=True, key="-hname_db2-") ],
        [ sg.Text("Server"), sg.In(size=(None,5), enable_events=True, key="-sname_db2-") ],
        [ sg.Text("Port"), sg.In(size=(None,5), enable_events=True, key="-port_db2-") ],
        [ sg.B('Test Con2',key='B2') ],
    ]
    
    layoutprefile = [
    [ 
        sg.Column(DB_creds_one),
        sg.VSeperator(),
        sg.Column(db_creds_two),
    ],
    
    [sg.Output(size=(80, 25), key='-output-')],
    [sg.Submit('Proceed'), sg.Button('Exit')]
    ]
    
    window = sg.Window("DB Comparator", layoutprefile)
    
    # default values at start
    secondwindow = True
    Test_DB1 = False
    Test_DB2 = False
    
    while True:    # The Event Loop
        event, values = window.read()
        # print(event, values)  # debug
        if event == sg.WIN_CLOSED or event == 'Exit' or event == 'Cancel':
            secongwindow = False
            break
    
        
            
        
    
    if secondwindow == False:
        exit()
    else :  
    layoutpostfile = [
        [sg.Text('File 1'), sg.InputText(), sg.FileBrowse()],
        [sg.Output(size=(80, 25), key='-output-')],
        [sg.Submit('Compare'), sg.Button('Exit')]
    ]
    
    compare_window = sg.Window('File Compare', layoutpostfile)
    
    filecheck = False
    
    
            
    window.close()