小编Sar*_*rah的帖子

PyQt:为什么新窗口在打开后立即关闭

我有一个主窗口,我想在按下按钮时打开另一个窗口(不是对话框)。我的问题是新窗口打开后几乎立即关闭。我已经阅读了可用的文章,并尝试实现解决方案,但是似乎没有运气。这是我的整个代码:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class MainWindow (QMainWindow):
    def __init__(self):
        win = QWidget()
        win.adjustSize()
        grid=QGridLayout()
        grid.setRowStretch(0, 1)
        grid.setRowStretch(1, 1)
        grid.setRowStretch(5, 1)
        for i in range(0,5):
            for j in range(0,4):
                if i==0 and j==2:
                    l1=grid.addWidget(QLabel("Choose an option:"),i,j, 2, 2)
                if i==2 and j==1:
                    b1= QPushButton("Get Best Match")
                    grid.addWidget(b1,i,j)
                elif i==2 and j==2:
                    b2=QPushButton("Button2")
                    grid.addWidget(b2,i,j)
                elif i==2 and j==3:
                    b3=QPushButton("Button3")
                    grid.addWidget(b3,i,j)
        b5=grid.addWidget(QLabel(""),3,4) 
        b4=QPushButton("Button4")
        grid.addWidget(b4,2,4)
        w1=b1.clicked.connect(window1)
        b2.clicked.connect(Win2)
        b3.clicked.connect(Win3)
        b4.clicked.connect(Win4)            
        win.setLayout(grid)
        win.setGeometry(100,100,width//2,height//2,)
        win.setWindowTitle("PYQT")
        win.show()
        win.setStyleSheet("""
        .QPushButton {
        height: …
Run Code Online (Sandbox Code Playgroud)

python user-interface pyqt pyqt4

3
推荐指数
1
解决办法
3478
查看次数

PyQt:不均等地划分QHBoxLayout中小部件占用的区域

我想要一个如下的布局:

布局

我正在使用QHBoxLayout并添加两个小部件 - 但这两个小部件都获得了 50% 的可用空间,而不是我需要的 25% / 75% 布局。

如何不均匀地分配小部件的区域?

python layout user-interface pyqt

3
推荐指数
1
解决办法
2287
查看次数

PyQt:如何从选择查询中获取行值

我正在 PyQt 中创建一个应用程序,我想在其中创建一个列表,列表项是 SQL 查询的结果。我正在尝试通过以下代码执行此操作:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtSql import *

def main():  
    app  = QApplication(sys.argv)
    win=QWidget()
    layout=QHBoxLayout()
    db = QSqlDatabase.addDatabase("QODBC")
    win.setWindowTitle("Connect to MSSQL Database Example")   
    db.setHostName('LAPTOP-B79DRPA3')
    db.setDatabaseName('local')
    db.open()
    if (db.open()==False):     
      QMessageBox.critical(None, "Database Error",
                db.lastError().text())   

    query = QSqlQuery () 
    query.exec_  ("select lydelse, bransch from [Sarah].[dbo].fraga")

    listWidget = QListWidget()
    index=0
    while (query.next()):
        listWidget.addItem(str(query.value(index)))
        index = index+1
    listWidget.setSelectionMode(QAbstractItemView.ExtendedSelection)
    layout.addWidget(listWidget)
    win.setLayout(layout)
    win.show()
    return app.exec_()

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

但是这里发生的事情是输出是一个包含来自不同列的项目的列表。我想要的是我应该能够选择一列并将所有行项目作为 list-items 添加到列表中:

index=0
while (query.next()): …
Run Code Online (Sandbox Code Playgroud)

python pyqt qsqlquery

2
推荐指数
1
解决办法
4881
查看次数

标签 统计

pyqt ×3

python ×3

user-interface ×2

layout ×1

pyqt4 ×1

qsqlquery ×1