#python #python-3.x #pyqt #pyqt5
#python #python-3.x #pyqt #pyqt5
Вопрос:
Я хочу переместить положение groupbox
в окне, но menubar
и tools
также перемещены.
как мне это исправить и просто переместить позицию GroupBox
? ( move
Команда не работает)
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window, self).__init__()
V = QtWidgets.QApplication.desktop().screenGeometry()
h, w, x, y = V.height(), V.width(), 1000, 600
self.setGeometry(h/4, w/20, x, y)
self.setFixedSize(x, y)
self.setWindowTitle('Main Window')
OpenFile = QtWidgets.QAction('Open', self)
OpenFile.setShortcut('Ctrl O')
OpenFile.setStatusTip('Open Restore File...')
self.statusBar()
mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('File')
fileMenu.addAction(OpenFile)
self.home()
def home(self):
self.tools_in_home()
self.show()
def tools_in_home(self):
self.groupBox = QtWidgets.QGroupBox('Test')
self.groupBox.setFixedSize(800, 400)
self.setContentsMargins(100, 100, 100, 100) # <=== HERE
hBoxLayout = QtWidgets.QHBoxLayout()
self.groupBox.setLayout(hBoxLayout)
self.setCentralWidget(self.groupBox)
def run():
app = QtWidgets.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
if __name__ == '__main__':
run()
Ответ №1:
Попробуйте:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window, self).__init__()
V = QtWidgets.QApplication.desktop().screenGeometry()
h, w, x, y = V.height(), V.width(), 1000, 600
self.setGeometry(h/4, w/20, x, y)
self.setFixedSize(x, y)
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
centralWidget = QtWidgets.QWidget()
self.setCentralWidget(centralWidget)
self.grid = QtWidgets.QGridLayout(centralWidget)
left, top, right, bottom = 100, 100, 100, 100
centralWidget.setContentsMargins(left, top, right, bottom)
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OpenFile = QtWidgets.QAction('Open', self)
OpenFile.setShortcut('Ctrl O')
OpenFile.setStatusTip('Open Restore File...')
self.statusBar()
mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('File')
fileMenu.addAction(OpenFile)
self.home()
def home(self):
self.tools_in_home()
self.show()
def tools_in_home(self):
self.groupBox = QtWidgets.QGroupBox('Test')
self.groupBox.setFixedSize(800, 400)
self.grid.addWidget(self.groupBox)
def run():
app = QtWidgets.QApplication(sys.argv)
GUI = Window()
GUI.setWindowTitle('Main Window')
sys.exit(app.exec_())
if __name__ == '__main__':
run()
Обновить
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window, self).__init__()
V = QtWidgets.QApplication.desktop().screenGeometry()
h, w, x, y = V.height(), V.width(), 1000, 670 # 600
self.setGeometry(h/4, w/20, x, y)
self.setFixedSize(x, y)
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
centralWidget = QtWidgets.QWidget()
self.setCentralWidget(centralWidget)
self.grid = QtWidgets.QGridLayout(centralWidget)
left, top, right, bottom = 50, 50, 50, 50
centralWidget.setContentsMargins(left, top, right, bottom)
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OpenFile = QtWidgets.QAction('Open', self)
OpenFile.setShortcut('Ctrl O')
OpenFile.setStatusTip('Open Restore File...')
self.statusBar()
mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('File')
fileMenu.addAction(OpenFile)
self.home()
def home(self):
self.tools_in_home()
self.show()
def tools_in_home(self):
self.groupBox = QtWidgets.QGroupBox('Test')
self.groupBox.setFixedSize(400, 200) #(800, 400)
self.grid.addWidget(self.groupBox, 0, 0)
# vvvvv
self.groupBox1 = QtWidgets.QGroupBox('Test 1')
self.groupBox1.setFixedSize(400, 100)
self.groupBox2 = QtWidgets.QGroupBox('Test 2')
self.groupBox2.setFixedSize(400, 100)
self.groupBox3 = QtWidgets.QGroupBox('Test 3')
self.groupBox3.setFixedSize(400, 200)
self.grid.addWidget(self.groupBox1, 1, 0)
self.grid.addWidget(self.groupBox2, 1, 1)
self.grid.addWidget(self.groupBox3, 2, 1)
# ^^^^^
def run():
app = QtWidgets.QApplication(sys.argv)
GUI = Window()
GUI.setWindowTitle('Main Window')
sys.exit(app.exec_())
if __name__ == '__main__':
run()
Комментарии:
1. спасибо, но что мне делать, если я хочу создать четыре групповых поля с разными позициями?
2. @Nima Я добавил обновления по интересующему вас вопросу.