gpt4 book ai didi

python - 'PySide2.QtWidgets.QApplication' 对象没有属性 'exec'

转载 作者:行者123 更新时间:2023-12-05 01:35:26 25 4
gpt4 key购买 nike

我正在使用 Qt 阅读有关 Python 上的 Tabwidgets 的教程。我已经了解它的基础知识。我想编写一个包含多个选项卡的应用程序,每个选项卡由几个小部件组成。我在 codeloop 上找到了很棒的教程,其中使用了 PyQt5。我遵循了教程,但是我用 PySide 2 替换了 PyQt5。不幸的是,它似乎无法在我的系统上运行。

我收到以下错误:

File "/home/conan/python/advanced/GUI/Qt/tabwidget-advanced.py", line 81, in <module>
app.exec()
AttributeError: 'PySide2.QtWidgets.QApplication' object has no attribute 'exec'

这是我的代码:

from PySide2 import QtGui
from PySide2.QtWidgets import QApplication, QDialog, QTabWidget, QComboBox, QCheckBox, QGroupBox, QVBoxLayout, QWidget, \
QLabel, QLineEdit, QDialogButtonBox
from PySide2.QtGui import QIcon, QFont
import sys


class Tab(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQt5 TabWidget Example")
self.setWindowIcon(QIcon("icon.png"))
# self.setStyleSheet('background-color:grey')
vbox = QVBoxLayout()
tabWidget = QTabWidget()
buttonbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
buttonbox.accepted.connect(self.accept)
buttonbox.rejected.connect(self.reject)
tabWidget.setFont(QtGui.QFont("Sanserif", 12))
tabWidget.addTab(TabContact(), "Contact Details")
tabWidget.addTab(TabPeronsalDetails(), "Personal Details")
vbox.addWidget(tabWidget)
vbox.addWidget(buttonbox)
self.setLayout(vbox)


class TabContact(QWidget):
def __init__(self):
super().__init__()
nameLabel = QLabel("Name: ")
nameEdit = QLineEdit()
phone = QLabel("Phone:")
phoneedit = QLineEdit()
addr = QLabel("Address:")
addredit = QLineEdit()
email = QLabel("Email:")
emailedit = QLineEdit()
vbox = QVBoxLayout()
vbox.addWidget(nameLabel)
vbox.addWidget(nameEdit)
vbox.addWidget(phone)
vbox.addWidget(phoneedit)
vbox.addWidget(addr)
vbox.addWidget(addredit)
vbox.addWidget(email)
vbox.addWidget(emailedit)
self.setLayout(vbox)


class TabPeronsalDetails(QWidget):
def __init__(self):
super().__init__()
groupBox = QGroupBox("Select Your Gender")
list = ["Male", "Female"]
combo = QComboBox()
combo.addItems(list)
vbox = QVBoxLayout()
vbox.addWidget(combo)
groupBox.setLayout(vbox)
groupBox2 = QGroupBox("Select Your Favorite Programming Language")
python = QCheckBox("Python")
cpp = QCheckBox("C++")
java = QCheckBox("Java")
csharp = QCheckBox("C#")
vboxp = QVBoxLayout()
vboxp.addWidget(python)
vboxp.addWidget(cpp)
vboxp.addWidget(java)
vboxp.addWidget(csharp)
groupBox2.setLayout(vboxp)
mainLayout = QVBoxLayout()
mainLayout.addWidget(groupBox)
mainLayout.addWidget(groupBox2)
self.setLayout(mainLayout)


if __name__ == "__main__":
app = QApplication(sys.argv)
tabdialog = Tab()
tabdialog.show()
app.exec()

我该如何解决这个问题?

最佳答案

尝试使用 exec_() 而不是 exec()

PySide2 由于遗留原因使用它(exec 过去曾是 Python 中的保留关键字)。

关于python - 'PySide2.QtWidgets.QApplication' 对象没有属性 'exec',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62916408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com