我尝试多次使用替换方法,以便更改多索引熊猫数据帧的给定级别的索引。
如下所示:Pandas:修改 Multiindex 的特定级别,@John 得到了一个解决方案,只要使用一次替换方法,该解决方案就可以很好地工作。
问题是,如果我多次使用这个方法,它就不起作用了。例如
df.index = df.index.set_levels(df.index.levels[0].str.replace("dataframe_",'').replace("_r",' r'), level=0)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
AttributeError: 'Index' object has no attribute 'replace'
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
基于/sf/answers/1594319331/可检查组合框实现,我想更进一步,能够直接在主 QComboBox 标签上显示已检查项目的列表,即当显示文本时QComboBox 的未“展开”。
到目前为止,我可以打印已检查项目的列表,但我不知道如何使用前者更改主 QComboBox 标签文本:
from PyQt5.QtWidgets import QApplication, QComboBox, QMainWindow, QWidget, QVBoxLayout
from PyQt5.QtGui import QStandardItemModel
from PyQt5.QtCore import Qt
import sys
class CheckableComboBox(QComboBox):
def __init__(self):
super(CheckableComboBox, self).__init__()
self.view().pressed.connect(self.handle_item_pressed)
self.setModel(QStandardItemModel(self))
def handle_item_pressed(self, index):
item = self.model().itemFromIndex(index)
if item.checkState() == Qt.Checked:
item.setCheckState(Qt.Unchecked)
# print(item.text() + " was unselected.")
else:
item.setCheckState(Qt.Checked)
# print(item.text() + " was selected.")
self.check_items()
def item_checked(self, index):
item = self.model().item(index, 0)
return item.checkState() == Qt.Checked
def check_items(self):
checkedItems = []
for …Run Code Online (Sandbox Code Playgroud) 如何在弹出窗口中实现一个进度条,该窗口通过QThread监视来自所谓的 Worker 类(即时间/CPU 消耗任务)的运行函数的进度?
我已经检查了无数示例和教程,但进度条显示在弹出窗口中的事实似乎使一切变得更加困难。我相信我想要的是一件相当简单的事情,但我一直在失败,而且我的想法也用完了。
我有一个我想要实现的例子,它基于这个答案:
import sys
import time
from PyQt5.QtCore import QThread, pyqtSignal, QObject, pyqtSlot
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget, QHBoxLayout, QProgressBar, QVBoxLayout
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Widget")
self.h_box = QHBoxLayout(self)
self.main_window_button = QPushButton("Start")
self.main_window_button.clicked.connect(PopUpProgressB)
self.h_box.addWidget(self.main_window_button)
self.setLayout(self.h_box)
self.show()
class Worker(QObject):
finished = pyqtSignal()
intReady = pyqtSignal(int)
@pyqtSlot()
def proc_counter(self): # A slot takes no params
for i in range(1, 100):
time.sleep(1)
self.intReady.emit(i)
self.finished.emit()
class PopUpProgressB(QWidget):
def …Run Code Online (Sandbox Code Playgroud) 导入tkinter不会导入一些基本且有用的模块,例如messagebox,如下所述:tkinter.messagebox.showinfo 并不总是有效
我如何检查哪些模块是实际导入的,哪些模块import tkinter可以通过显式导入(例如from tkinter import messagebox)来导入?
python ×4
pyqt ×2
pyqt5 ×2
dataframe ×1
import ×1
multi-index ×1
pandas ×1
python-3.x ×1
qcombobox ×1
qprogressbar ×1
qthread ×1
tkinter ×1
tkmessagebox ×1