pyqt5怎么实现点击pyqt5按钮点击获取按钮名,连接数据库后,在tableview或者tablewidget显示数据?

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
请教一下大家,想实现在主窗口中点击按钮调用一个新窗口,这个窗口是tablewidget,目前可以实现弹出窗口,但是无法显示表格,只有一个空白窗口。实在找不到原因了,还请大家指点。这是主窗口代码
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'question.ui'
# Created by: PyQt4 UI code generator 4.11.4
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(344, 244)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(110, 80, 121, 61))
font = QtGui.QFont()
font.setPointSize(17)
self.pushButton.setFont(font)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 344, 23))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.pushButton.setText(_translate("MainWindow", "Push", None))
这是被调用的窗口代码
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'qtable.ui'
# Created by: PyQt4 UI code generator 4.11.4
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainTable(QtGui.QWidget):
def setupUi(self, Table):
Table.setObjectName(_fromUtf8("Table"))
Table.resize(422, 196)
self.centralwidget = QtGui.QWidget(Table)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.tableWidget = QtGui.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(0, 0, 421, 171))
self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
self.tableWidget.setColumnCount(4)
self.tableWidget.setRowCount(4)
item = QtGui.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(0, item)
item = QtGui.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(1, item)
item = QtGui.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(2, item)
item = QtGui.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(3, item)
item = QtGui.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtGui.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
item = QtGui.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(2, item)
item = QtGui.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(3, item)
Table.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(Table)
self.menubar.setGeometry(QtCore.QRect(0, 0, 422, 23))
self.menubar.setObjectName(_fromUtf8("menubar"))
Table.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(Table)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
Table.setStatusBar(self.statusbar)
self.retranslateUi(Table)
QtCore.QMetaObject.connectSlotsByName(Table)
def retranslateUi(self, Table):
Table.setWindowTitle(_translate("Table", "Table", None))
item = self.tableWidget.verticalHeaderItem(0)
item.setText(_translate("Table", "1", None))
item = self.tableWidget.verticalHeaderItem(1)
item.setText(_translate("Table", "2", None))
item = self.tableWidget.verticalHeaderItem(2)
item.setText(_translate("Table", "3", None))
item = self.tableWidget.verticalHeaderItem(3)
item.setText(_translate("Table", "4", None))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("Table", "新建列", None))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("Table", "新建列", None))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("Table", "新建列", None))
item = self.tableWidget.horizontalHeaderItem(3)
item.setText(_translate("Table", "新建列", None))
这是主程序
from ui_question import Ui_MainWindow
from PyQt4 import QtGui
from PyQt4.QtCore import QCoreApplication
from PyQt4.QtCore import *
import os,sys,subprocess,re
from ui_qtable import Ui_MainTable
class myui(QtGui.QMainWindow,Ui_MainWindow,Ui_MainTable):
def __init__(self, MainWindow):
QtGui.QMainWindow.__init__(self)
super(my2d,self).__init__()
self.setupUi(MainWindow)
self.pushButton.clicked.connect(self.createMaterialFunc)
def createMaterialFunc(self):
print 'OK'
self.another = Ui_MainTable()
self.another.show()
if __name__ ==
"__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = myui(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
运行结果如下:非常感谢大家!!麻烦大家了!!
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
主程序line 17的createMaterialFunc()函数,改为如下:
def createMaterialFunc(self):
self.another = Ui_MainTable()
self.table = QtGui.QMainWindow()
self.another.setupUi(self.table)
self.table.show()
运行结果:
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。PyQt5下面的plugins文件下载
[问题点数:0分]
本版专家分:0
结帖率 40.83%
CSDN今日推荐
匿名用户不能发表回复!|
其他相关推荐共被编辑 2 次
1) 不能用label代替吧,毕竟不是一个东西3)
见setColumnStretch说明Sets the stretch factor of column column to stretch. The first column is number 0.The stretch factor is relative to the other columns in this grid. Columns with a higher stretch factor take more of the available space.The default stretch factor is 0. If the stretch factor is 0 and no other column in this table can grow at all, the column may still grow.An alternative approach is to add spacing using addItem() with a QSpacerItem.
2) 感觉你tableWidget使用不规范,建议做成成员变量self.tableWidget = None然后contextGrid初始化,之后根据条数动态的往里面加数据。
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import *
import urllib.request as request
import Spider
class MyTableWidget(QTableWidget):
def __init__(self):
super().__init__()
self.setMinimumWidth(400)
self.setColumnCount(1)
self.setColumnWidth(0, 400)
self.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.itemClicked.connect(self.handleItemClick)
def handleItemClick(self, item):
print(item.text())
class MainScene(QWidget):
def __init__(self, parent=None):
super().__init__()
self.grid = QGridLayout()
self.setLayout(self.grid)
self.novelNameEdit = QLineEdit("http://xs.dmzj.com/2012/index.shtml")
self.searchBtn = QPushButton("Search")
self.novelText = QLabel("Content")
self.tableWidget = MyTableWidget()
self.grid.addWidget(self.novelNameEdit, 0, 0, 1, 2)
self.grid.addWidget(self.searchBtn, 0, 2, 1, 1)
self.grid.addWidget(self.tableWidget, 1, 0, 2, 2)
self.grid.addWidget(self.novelText, 1, 2, 1, 1)
self.resize()
self.searchBtn.clicked.connect(self.searchBtnClick)
def searchBtnClick(self):
self.tableWidget.clear()
Sp = Spider.Catalogue()
content = request.urlopen(self.novelNameEdit.text()).read()
content = str(content, 'utf-8')
Sp.feed(content)
Sp.close()
catalogueCount = len(Sp.catalogueList)
self.tableWidget.setRowCount(catalogueCount)
for index, item in enumerate(Sp.catalogueList):
self.tableWidget.setItem(index, 0, QTableWidgetItem(item))
if __name__ == "__main__":
App = QApplication(sys.argv)
MS = MainScene()
sys.exit(App.exec_())
你这个贴的代码是不全的
我要该,理由是:查看: 266|回复: 8
[已解决]PYQT5如何获取tableWidget里面的值
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
用PYQT5设置了一个tableWidget,想获取里面某个单元格的内容,用的下面这句:
item1 = self.tableWidget_2.item(1, 1).text()
但是运行后显示出错:unhan
unhandled AttributeError&'NoneType' object has no attribute 'text'&
请问是哪里出了问题呢?
你1,1的位置没添加item吧
&&&本楼为最佳答案&&&
你1,1的位置没添加item吧
你1,1的位置没添加item吧
感谢,问题解决,原来表格是从(0,0)开始的。
你1,1的位置没添加item吧
另外,请问一下,表头的网格线看不清楚,如何重新定义呢?
setShowGrid(True)
setShowGrid(True)
已经用了这句,非表头数据都有表格,但是表头,不管是横的还是竖的,都没网格线。
那我也不知道了,看文档很多函数,但是其他的也不像和画表头线有关
那我也不知道了,看文档很多函数,但是其他的也不像和画表头线有关
哪里有这种文档
哪里有这种文档
英文的,IDLE都有
小甲鱼强烈推荐 /1
新的视频新的面貌,希望大家喜欢 (≧∇≦)ノ
- - - - - - - - - - - -
新课程,新体验!
Powered by本文出自汗血宝马,转载时请注明出处及相应链接。
本文永久链接: http://www.caotama.com/41575.html
0 , , ,
Ɣ回顶部

我要回帖

更多关于 pyqt5按钮 的文章

 

随机推荐