[英]PyQt5 can't create Tabbars or Tabs
我一直在努力学习PyQt5(和面向对象的编程)。 在当前脚本中,我需要创建一个选项卡式界面,但似乎无法对其进行管理。 我怀疑问题与OOP有关(我是新手)。 “自我”似乎是问题所在,我有点知道这意味着什么,但不足以解决它。 以下是我的最新尝试。 似乎我在脚本的其他地方使用了“错误的自我”。 我非常想了解面向对象的编程-在此先感谢任何有足够帮助的人!
一些代码/错误是:
码:
tabbar = QTabBar()
tab1 = QTabWidget()
tabbar.addTab(tab1, 'tab1')
错误:
TypeError: arguments did not match any overloaded call:
addTab(self, str): argument 1 has unexpected type 'QTabWidget'
addTab(self, QIcon, str): argument 1 has unexpected type 'QTabWidget'
这是代码:
class App(QMainWindow):
def launch(self, filepath):
subprocess.run(filepath)
def newLauncher(self, matrix):
pass # cut for brevity
def __init__(self):
super(App, self).__init__()
tabbar = QTabBar()
tab1 = QTabWidget()
index = tabbar.addTab(tab1, 'tab1')
self.initUI()
def initUI(self):
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
您想了解OOP很好,但是在这种情况下,这不是主要问题,但似乎您没有阅读本文档。 如果我们检查它是否为QTabBar
,则会看到它指向QTabWidget
的顶部,即带有按钮的那部分。
您不必使用QTabBar
但QTabWidget
, QTabWidget
有addTab
需要作为第一个参数,将在页面上显示的窗口小部件,并作为第二个参数,将出现在按钮的标题方法。
我在您的代码中看到的另一个错误是,您创建了窗口小部件,但未将其设置为另一个窗口小部件的一部分,而只是我们知道函数完成后会删除的局部变量。
由于您使用的是QMainWindow
,因此必须将QTabWidget
设置为中央窗口小部件的一部分,为此,我们可以使用布局。
import sys
from PyQt5.QtWidgets import *
class App(QMainWindow):
def __init__(self):
super(App, self).__init__()
centralWidget = QWidget()
lay = QVBoxLayout(centralWidget)
tab = QTabWidget()
lay.addWidget(tab)
for i in range(5):
page = QWidget()
tab.addTab(page, 'tab{}'.format(i))
self.setCentralWidget(centralWidget)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.