我希望能够在QWidget
内创建(或打开,我不知道说出来的正确方法)QMainWindow
。我的主窗口仅包含状态栏和上方工具栏。例如,我想打开设置窗口,我不希望它显示在我希望它显示在我的主窗口内的不同窗口。
我正在寻找一些例子但我无法在我的案例中实施它。我的gui是由QDesigner
制作的文件。
这是我的示例代码:
import sys,os,time,logging
from PyQt4 import QtGui, uic ,QtSql,QtCore
from PyQt4.QtCore import QThread, SIGNAL
from PyQt4.QtGui import *
sys.stderr = open("errlog.txt", "w")
class dialog1(QtGui.QWidget):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
file_path = os.path.abspath("ui/dialog1.ui")
uic.loadUi(file_path, self)
class MyWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
# super(MyWindow, self).__init__()
file_path = os.path.abspath("ui/main.ui")
uic.loadUi(file_path, self)
self.actionAbout.triggered.connect(self.run_dialog1)
def run_dialog1(self):
dialog = dialog1(parent=MyWindow)
dialog.show()
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
如果你可以帮我解决这个问题,我会很感激,所以我能理解它是如何运作的。谢谢
更新并解决:
对于帮助人员,我解决了这个问题。我会提供更新。import sys,os,time,logging
from PyQt4 import QtGui, uic ,QtSql,QtCore
from PyQt4.QtCore import QThread, SIGNAL
from PyQt4.QtGui import *
import mysql.connector as mariadb
import base64
from uuid import getnode as get_mac
from platform import system as system_name # Returns the system/OS name
from os import system as system_call # Execute a shell command
import subprocess
sys.stderr = open("errlog.txt", "w")
class settings(QtGui.QTabWidget):
def __init__(self,parent):
QtGui.QTabWidget.__init__(self,parent)
file_path = os.path.abspath("ui/settings.ui")
uic.loadUi(file_path, self)
class MyWindow(QtGui.QMainWindow):
def __init__(self,parent=None):
QtGui.QMainWindow.__init__(self,parent)
# super(MyWindow, self).__init__()
file_path = os.path.abspath("ui/main.ui")
uic.loadUi(file_path, self)
def run_settings(self):
self.form_widget = settings(self)
self.setCentralWidget(self.form_widget)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
答案 0 :(得分:1)
你在考虑像停靠小工具这样的东西吗? http://doc.qt.io/qt-4.8/qdockwidget.html#details
QDockWidget提供了dock小部件的概念,也称为工具调色板或实用程序窗口。停靠窗口是放置在QMainWindow中央窗口小部件周围的停靠窗口小部件区域中的辅助窗口。
答案 1 :(得分:1)
试试setCentralWidget 在QMainWindow中添加QWidget,
如果要在QMainWindow内部切换不同的小部件,可以使用QStackedWidget作为中心小部件,将类似设置的小部件添加到stackedWidget,并添加一些按钮以在小部件之间切换。