PyQt5
的文档相对较少,在自己的实际开发使用中,遇到了些许的坑。网上也没有大把的例子供我参考,还有好多例子停留在Qt4这个版本。所以将调bug的过程记录于此,均为自己探索的较为良好的解决方案。包括:
qtpandas的版本问题
数据库使用
pyqtgraph绘图
提升窗口(matplotlib)
Html的动态绘图
同样,代码太长,不能全部放上来,只放了核心代码,稍微有GUI开发基础的人都能看懂。或者,你可以按照目录观看自己想要的部分。或者,去给出的github链接内拿代码。
https://github.com/muyuuuu/PyQt-learn/tree/master/GUI/Basic-train
https://github.com/draperjames/qtpandas
库的安装很费劲,但是,真的好用,代码与截图如下:
文件结构:(qtpandas的文件夹在这,调用里面的代码,库的本质还是代码啊)
执行效果:
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
from qtpandas.views.DataTableView import DataTableWidget from qtpandas.models.DataFrameModel import DataFrameModel class MyMainWidget(QWidget, Ui_Form):
def __init__(self, parent = None): super(MyMainWidget, self).__init__(parent) self.setupUi(self)
self.setLayout(self.gridLayout)
self.quit_btn.clicked.connect(self.quit_act)
model = DataFrameModel() self.widget_2.setViewModel(model) data = { 'A': [10, 11, 12], 'B': [12, 11, 10], 'C': ['a', 'b', 'c'] } self.df = pandas.DataFrame(data) self.df['A'] = self.df['A'].astype(np.int8) model.setDataFrame(self.df)
self.quit_btn_7.clicked.connect(self.save_data)
def save_data(self): self.df.to_csv('data.csv')
def quit_act(self): sender = self.sender() print(sender.text() + '键被按下') qApp = QApplication.instance() qApp.quit()
|
https://blog.csdn.net/liang19890820/article/details/52384042
每个
Widget
都可以设置风格,因此建议主要界面使用
QWidget
作为窗口的主要区域用于设背景风格。同样,如上文提到的,
QMainWindow
里切换风格效果很不好,不如把所有控件放在
QWidget
里面,切换风格也方便。black.qss还有white.qss都是从上面的CSDN里的博客下载的。
文件结构如下:
切换风格的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
class StyleFile: def __init__(self): pass def readQSS(style): with open (style, 'r') as f: return f.read()
class MyMainWidget(QWidget, Ui_Form):
def __init__(self, parent = None): super(MyMainWidget, self).__init__(parent) self.setupUi(self) self.quit_btn_3.clicked.connect(self.style_change) self.quit_btn_4.clicked.connect(self.style_change1)
def style_change1(self): style_file = 'white.qss' self.style = StyleFile.readQSS(style_file) self.setStyleSheet(self.style)
def style_change(self): style_file = 'black.qss' self.style = StyleFile.readQSS(style_file) self.setStyleSheet(self.style)
|
效果如下:
黑色主题
白色主题
而设置窗口的无边框风格、透明度风格则必须要在
QMainWindow
里面设置,因为这是窗口的特有方法。
https://gallery.echartsjs.com/explore.html#sort=rank~timeframe=all~author=all
pyecharts的:
https://github.com/pyecharts/pyecharts/tree/master/example
我随意挑选了一个,执行后生成本地的html文件(可交互的图形)。
文件结构:
效果如下所示:
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
class MyMainWidget(QWidget, Ui_Form):
def __init__(self, parent = None): super(MyMainWidget, self).__init__(parent) self.setupUi(self)
self.setLayout(self.gridLayout)
self.quit_btn_2.clicked.connect(self.html_plot)
def html_plot(self): url = "/home/lanling/Srcode/python/tools/GUI/practice/Pyecharts/render.html" self.web_view.load(QUrl.fromLocalFile(url))
|