python-3.x 当改变主窗口的大小时自动重新调整窗口小部件的大小[重复]

qacovj5a  于 2023-11-20  发布在  Python
关注(0)|答案(2)|浏览(105)

此问题在此处已有答案

How to make a Qt Widget grow with the window size?(4个答案)
Resizing widgets in PyQt4(1个答案)
Controls insist on being too large, and won't resize, in QtDesigner(1个答案)
4天前关闭。
我用QtDesigner设计了一个PyQt5 GUI(MainWindow)。因此,我把小部件“拖放到”MainWindow中,并把它们放在我想要的地方。
到目前为止一切都很好。
然而,当我想在全屏模式下打开应用程序时,这些小部件并没有被调整大小。
一些研究时间后,似乎我做了一个oopsie,因为我没有使用任何特定的布局...我是正确的吗?
但我仍然有一些希望,有人有同样的问题之前,也许修复它。我也尝试了几件事自己,像设置小部件的SizePolicy扩大。但没有工作。
我还提供了一个极简的代码,它有同样的错误。
Python脚本:

from PyQt5 import QtWidgets, uic
import sys
class Ui(QtWidgets.QMainWindow):
    def __init__(self):
        super(Ui, self).__init__() # Call the inherited classes __init__ method
        uic.loadUi('Test.ui', self) # Load the .ui file
        self.show() # Show the GUI
        self.button1.clicked.connect(self.button1_clicked)

    def button1_clicked(self):
        self.label1.setText("Who is there?")
        
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()

字符串
Test.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>931</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QPushButton" name="button1">
    <property name="geometry">
     <rect>
      <x>300</x>
      <y>160</y>
      <width>261</width>
      <height>61</height>
     </rect>
    </property>
    <property name="text">
     <string>Knock Knock</string>
    </property>
   </widget>
   <widget class="QLabel" name="label1">
    <property name="geometry">
     <rect>
      <x>330</x>
      <y>250</y>
      <width>221</width>
      <height>61</height>
     </rect>
    </property>
    <property name="text">
     <string>-----------------------------------</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>931</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>


有人可以帮助我吗?或者除了使用特定的布局之外没有其他方法?
问候:)

3b6akqbq

3b6akqbq1#

好吧,这取决于你是如何创建你的布局的。.你是否将你的MainWindow对象设置为网格布局?如果你的小部件没有调整大小,可能是你没有设置你的MainWindow对象布局。如果你已经放置了网格布局,它应该在左上角看起来是灰色的,你必须选择你的MainWindow对象PICTURE

ttcibm8c

ttcibm8c2#

我不知道你说的“具体布局”是什么意思,但这句话准确地描述了你在这里所做的一切--你已经直接用特定的X和Y坐标放置和调整了每个组件的大小。这里没有代码来做任何布局。使用Qt的正确方法是使用布局。然后布局管理器将为你管理所有的布局。掌握布局的哲学和但结果是值得的努力。你永远不必担心X和Y了。
以下是布局指南:
https://doc.qt.io/qt-6/layout.html

相关问题