python PyQt5如何让窗口控件与窗口大小同步变化?
在下面的代码中 self.tableWidget.resize(self.width()-20,self.height()-20)
self.tableWidget.move(10,20)
这两行没有起作用?不知为何?
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import pandas as pd
import numpy as np
class Ui_MainWindow(QMainWindow):
def __init__(self): super(QtWidgets.QMainWindow,self).__init__()
self.setupUi(self)
self.retranslateUi(self)
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(666, 488)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.retranslateUi(MainWindow)
self.tableWidget = QtWidgets.QTableWidget(self.centralWidget)
self.tableWidget.setGeometry(QtCore.QRect(0, 40, self.geometry().width(), self.geometry().height()-40))
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(0)
self.tableWidget.setRowCount(0)
self.tableWidget.setStyleSheet("selection-background-color:pink")
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.tableWidget.raise_()
self.pushButton = QtWidgets.QPushButton(self.centralWidget)
self.pushButton.setGeometry(QtCore.QRect(90, 20, 75, 23))
self.pushButton.setObjectName("pushButton")
self.pushButton.setText("打开")
MainWindow.setCentralWidget(self.centralWidget)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.pushButton.clicked.connect(self.openfile)
self.pushButton.clicked.connect(self.creat_table_show)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "一颗数据小白菜"))
def openfile(self):
###获取路径===================================================================
openfile_name = QFileDialog.getOpenFileName(self,'选择文件','','Excel files(*.xlsx , *.xls)')
#print(openfile_name)
global path_openfile_name
###获取路径====================================================================
path_openfile_name = openfile_name[0]
def resizeEvent(self, e):
#self.tableWidget.setGeometry(QtCore.QRect(0, 40, self.geometry().width(), self.geometry().height()-40))
#QtWidgets.QWidget.resizeEvent(self, e)
self.tableWidget.resize(self.width()-20,self.height()-20)
self.tableWidget.move(10,20)
def creat_table_show(self):
###===========读取表格,转换表格,===========================================
if len(path_openfile_name) > 0:
input_table = pd.read_excel(path_openfile_name)
#print(input_table)
input_table_rows = input_table.shape[0]
input_table_colunms = input_table.shape[1]
#print(input_table_rows)
#print(input_table_colunms)
input_table_header = input_table.columns.values.tolist()
#print(input_table_header)
###===========读取表格,转换表格,============================================
###======================给tablewidget设置行列表头============================
self.tableWidget.setColumnCount(input_table_colunms)
self.tableWidget.setRowCount(input_table_rows)
self.tableWidget.setHorizontalHeaderLabels(input_table_header)
###======================给tablewidget设置行列表头============================
###================遍历表格每个元素,同时添加到tablewidget中========================
for i in range(input_table_rows):
input_table_rows_values = input_table.iloc[[i]]
#print(input_table_rows_values)
input_table_rows_values_array = np.array(input_table_rows_values)
input_table_rows_values_list = input_table_rows_values_array.tolist()[0]
#print(input_table_rows_values_list)
for j in range(input_table_colunms):
input_table_items_list = input_table_rows_values_list[j]
#print(input_table_items_list)
# print(type(input_table_items_list))
###==============将遍历的元素添加到tablewidget中并显示=======================
input_table_items = str(input_table_items_list)
newItem = QTableWidgetItem(input_table_items)
newItem.setTextAlignment(Qt.AlignHCenter|Qt.AlignVCenter)
self.tableWidget.setItem(i, j, newItem)
###================遍历表格每个元素,同时添加到tablewidget中========================
else:
self.centralWidget.show()
if name == "__main__":
import sysapp = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
下面的代码
from PyQt5.Qt import * #刚开始学习可以这样一下导入
import sys,time
class Window(QWidget):
def __init__(self): super().__init__()
self.setWindowTitle("QLineEdit 输出模式的案例")
self.resize(400,400)
self.set_ui()
self.i = 1
def set_ui(self):
self.account_lineEdit = QLineEdit(self)
self.pwd_lineEdit = QLineEdit(self)
self.btn = QPushButton(self)
def resizeEvent(self, event):
widget_w = 150
widget_h = 30
widget_h_margin = 10
top_margin = 50
self.account_lineEdit.resize(self.width()-60,widget_h)
self.pwd_lineEdit.resize(widget_w,widget_h)
self.btn.setText("登 录")
self.btn.resize(widget_w,widget_h)
x = (self.width() - widget_w)/2
y1 = top_margin
y2 = y1 + widget_h +widget_h_margin
y3 = y2 + widget_h +widget_h_margin
self.account_lineEdit.move(x,y1)
self.account_lineEdit.move(30,20)
self.pwd_lineEdit.move(x,y2)
self.btn.move(x,y3)
print(id(self.btn))
print(len(self.children()))
print("===",x,y1,y2,y3)
print("i = ",self.i)
self.i +=1
if name == "__main__":
app =QApplication(sys.argv)window = Window()
window.show()
sys.exit(app.exec_())
下面的代码正常
self.account_lineEdit.resize(self.width()-60,widget_h)
以上是 python PyQt5如何让窗口控件与窗口大小同步变化? 的全部内容, 来源链接: utcz.com/a/157838.html