我正在尝试加载一些需要30秒钟以上的数据。在这段时间内,我希望用户看到一个小的GUI,上面写着“正在加载。”,然后是“正在加载...”,然后是“正在加载...”,然后是“正在加载”。等。我已经读了一些书,我想我必须把它放在一个单独的线程中。我发现有人遇到类似问题,暗示解决方案在正确的位置:
t = threading.Thread(target=self.test)
t.daemon = True
t.start()
Run Code Online (Sandbox Code Playgroud)
在文件的下部,我具有测试功能
def test(self):
tmp = InfoMessage()
while True:
print(1)
Run Code Online (Sandbox Code Playgroud)
和InfoMessage函数
from PyQt5 import uic, QtCore, QtGui, QtWidgets
import sys
class InfoMessage(QtWidgets.QDialog):
def __init__(self, msg='Loading ', parent=None):
try:
super(InfoMessage, self).__init__(parent)
uic.loadUi('ui files/InfoMessage.ui',self)
self.setWindowTitle(' ')
self.o_msg = msg
self.msg = msg
self.info_label.setText(msg)
self.val = 0
self.timer = QtCore.QTimer()
self.timer.setInterval(500)
self.timer.timeout.connect(self.update_message)
self.timer.start()
self.show()
except BaseException as e:
print(str(e))
def update_message(self):
self.val += 1
self.msg += '.'
if self.val < 20:
self.info_label.setText(self.msg)
else:
self.val = 0 …Run Code Online (Sandbox Code Playgroud) 编辑:这个问题是关于为什么这种行为是这样的,而不是如何绕过它,这就是所谓的重复的内容。
我使用以下符号在不同情况下创建特定大小的列表。例如:
>>> [None] * 5
[None, None, None, None, None]
>>>
Run Code Online (Sandbox Code Playgroud)
这似乎按预期工作并且短于:
>>> [None for _ in range(5)]
[None, None, None, None, None]
>>>
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用相同的方法创建列表列表:
>>> [[]] * 5
[[], [], [], [], []]
>>>
Run Code Online (Sandbox Code Playgroud)
很公平。它似乎按预期工作。
然而,在检查调试器时,我注意到所有子列表存储桶都具有相同的值,即使我只添加了一个项目。例如:
>>> t = [[]] * 5
>>> t
[[], [], [], [], []]
>>> t[1].append(4)
>>> t
[[4], [4], [4], [4], [4]]
>>> t[0] is t[1]
True
>>>
Run Code Online (Sandbox Code Playgroud)
我并不期望所有顶级数组元素都是对单个子列表的引用;我期望有 5 个 …
我在ubuntu上
#include <sqlite3.h> /* sqlite3 */
void prog::on_pushButton_clicked()
{
sqlite3 *db;
int rc = sqlite3_open("/home/profile.sqlite", &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "Cannot open database: %s\n",
sqlite3_errmsg(db));
sqlite3_close(db);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
我想在 PyQt 中绘制一个带有嵌入式 matplotlib 的图形。我在主窗口使用 Qt Designer,并为信号和插槽连接部分编写 python 代码。
所以我的代码是这样的:
import sys
from PyQt4 import QtCore, QtGui, uic
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
qtCreatorFile = "main.ui" # my Qt Designer file
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
class MyApp(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.figure = plt.figure()
self.canvas = FigureCanvas(self.figure)
self.csvbutton.clicked.connect(self.plot)
def plot(self):
filePath="/path to csv file here"
df= pd.read_csv(str(filePath),index_col='date')
df.index = …Run Code Online (Sandbox Code Playgroud) 我想让 PyQt 工具栏中的特定按钮显示为按下(蓝色背景)。假设当我点击工具栏按钮时,我希望它显示为已按下
import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 700, 700)
self.setWindowTitle('Rich Text Editor')
self.statusBar = QStatusBar()
self.textEdit = QtGui.QTextEdit()
self.setCentralWidget(self.textEdit)
self.setStatusBar(self.statusBar)
self.home()
def home(self):
changeBoldActionTB = \
QtGui.QAction(QtGui.QIcon('bold-text-option.png'),
'Make the text bold', self)
changeBoldActionTB.triggered.connect(self.changeBold)
self.formatbar = QToolBar()
self.addToolBar(Qt.TopToolBarArea, self.formatbar)
self.formatbar.addAction(changeBoldActionTB)
self.show()
def changeBold(self):
pass
#I think this does't matter
def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
run()
Run Code Online (Sandbox Code Playgroud)
我有两个工具栏。我打算使用cursorPositionChanged来做到这一点,但在 …
我有一个用 QPixmap 填充的 Qlabel,我想在点击这个标签后启动一个进程/函数。我扩展了 QLabel 类,如下所示:
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class QLabel_alterada(QLabel):
clicked=pyqtSignal()
def __init(self, parent):
QLabel.__init__(self, QMouseEvent)
def mousePressEvent(self, ev):
self.clicked.emit()
Run Code Online (Sandbox Code Playgroud)
然后,在我的基于 pyuic5 的 .py 文件(我使用 QtDesigner 进行布局)导入我保存扩展 QLabel 类的模块后,在自动生成的 setupui 中,我将标签从
self.label1=QtWidgets.QLabel(self.centralwidget)
Run Code Online (Sandbox Code Playgroud)
到
self.label1 = QLABEL2.QLabel_alterada(self.centralwidget)
Run Code Online (Sandbox Code Playgroud)
最后,在核心应用程序 Python 文件中,我将添加的应用程序功能所需的所有过程/类都放入其中
self.ui.label1.clicked.connect(self.dosomestuff)
Run Code Online (Sandbox Code Playgroud)
应用程序不会崩溃,但标签仍然不可点击。有人可以给我一些帮助吗?
我有这个示例测验问题,但不确定如何使用 while 循环来处理它。
实现nearest_square函数。该函数采用整数参数 limit,并返回小于 limit 的最大平方数。
平方数是整数与其自身相乘的乘积,例如36是平方数,因为它等于6*6。
编写此代码的方法不止一种,但我建议您使用 while 循环!
您可以复制以下测试用例来测试您的代码。也可以随意编写额外的测试!
test1 = nearest_square(40)
print("expected result: 36, actual result: {}".format(test1))
Run Code Online (Sandbox Code Playgroud)
我已经设法解决了它。谢谢。
def nearest_square(limit):
limit = limit ** (0.5)
y = int (limit)
while y < limit :
y = y*y
return y
test1 = nearest_square(40)
print("expected result: 36,actual result:{}".format(test1))
Run Code Online (Sandbox Code Playgroud) 首先,我希望您有耐心,因为我是这类项目的新手,并且我也希望不要问愚蠢的问题。话虽这么说,我的主要目标是为树莓派3创建一个UI,该UI将从电池和太阳能面板中感应电压,电流等。
由于我正在研究树莓派并且对Python3有所了解,因此我决定使用QTCreator,据我所知,可以通过pyqt将其转换为python3(https://nikolak.com/pyqt-qt-designer-getting-started/)。我将其安装在树莓派上,并创建了以下用户界面:
在拥有基本的用户界面之后,我使用pyuic5命令将.ui文件转换为.py,并且能够使用“ python3 main.py”打开用户界面,一切似乎都正确:
打开main.py文件后用户界面的外观
现在,我想在UI上绘制几张图(例如电压与时间的关系图)。我正在使用以下进行测试:
import sys
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
win = pg.GraphicsWindow()
win.setWindowTitle('pyqtgraph example: Scrolling Plots')
p1 = win.addPlot(labels = {'left':'Voltage', 'bottom':'Time'})
data1 = np.random.normal(size=10)
data2 = np.random.normal(size=10)
curve1 = p1.plot(data1, pen=(3,3))
curve2 = p1.plot(data2, pen=(2,3))
ptr1 = 0
def update1():
global data1, curve1, data2, ptr1
data1[:-1] = data1[1:] # shift data in the array one sample left
# (see also: …Run Code Online (Sandbox Code Playgroud) 我有一个初学者 PythonAnywhere 帐户,帐户比较页面指出,该帐户具有“访问外部 Internet 站点:仅通过 HTTP(S) 访问特定站点”的功能。
所以我知道只有某些主机可以通过HTTP协议访问,但是该socket模块的使用有限制吗?特别是,我可以使用 来设置 Python 服务器socket吗?