如何在PyQt4中设置应用程序的任务栏图标?
我尝试过setWindowIcon,它成功地在主窗口的左上角设置了图标,但它不会影响Windows 7任务栏中显示的图标 - 任务栏图标仍然是默认的Python pyw图标.这是我的代码:
from PyQt4 import QtGui
app = QtGui.QApplication([])
mainwindow = QtGui.QMainWindow()
mainwindow.show()
app.setWindowIcon(QtGui.QIcon('chalk.ico'))
mainwindow.setWindowIcon(QtGui.QIcon('chalk.ico'))
app.exec_()
Run Code Online (Sandbox Code Playgroud)
[更新]我试过放在setWindowIcon()
之前show()
.我已尝试过其他图像,ico和png.什么都没有帮助.
试图潜入Qt的大部分时间,但尚未完成大型项目.目前正在使用Python,但我一直在想 - 在程序员生产力方面,这真的是更好的语言吗?
在大多数语言之间的比较中,Python是明显的答案,因为你不必混淆内存管理等等.
但是,Qt我不太确定.它为C++提供了足够的附加功能(从我可以看出)一行Python代码大部分时间大致等于一行C++代码(不包括类定义和结构组件等一些额外的东西).只要您坚持使用其类,Qt几乎可以为您完成所有内存管理,并为您在Python中找到的好容器提供等价物.
我一直喜欢静态类型的语言,但由于各种原因已经加入了Python的潮流.但是,如果程序员的工作效率与C++类似,我可能会以这种方式跳回来获得其他好处 - 更高效的代码和更少的用户安装依赖性.
思考?
这是我的第一个GUI设计,我没有使用GUI构建器,目前堆叠,因为我已经理解,wx.ListCtrl的ObjectListView包装器本身不包含容易进度条或规格元素.(参见图片中的"上传状态"栏).
注意: ObjectListView在.Net版本中有进度条,目前不在wx.Python中.
PS: 我发现了这个精彩的Python GTK +全栈教程
有没有办法清除(删除)布局中的所有小部件?
self.plot_layout = QtGui.QGridLayout()
self.plot_layout.setGeometry(QtCore.QRect(200,200,200,200))
self.root_layout.addLayout(self.plot_layout)
self.plot_layout.addWidget(MyWidget())
Run Code Online (Sandbox Code Playgroud)
现在我想plot_layout
用新的小部件替换小部件.是否有一种简单的方法可以清除所有小部件plot_layout
?我没有看到任何这样的方法.
从PyQt4网站上,他们安装软件包的说明是下载tarball并使用配置文件.我有两个版本的Python,一个是我的普通系统,另一个是anaconda.我不知道如何安装在anaconda中.是否有conda命令来安装PyQt4?
如何有一个文件对话框,只选择目录而不是PyQt中的文件?
如何检索所选目录的名称?
是否可以将QListWidget的高度和宽度调整为其内容?
sizeHint()
256, 192
无论内容是什么,总是返回.
QListWidgetItem
的sizeHint()
回报-1, -1
,所以我无法获得内容宽度.
问题与此处相同 - http://www.qtcentre.org/threads/31787-QListWidget-width,但没有解决方案.
import sys
from PyQt4.QtGui import *
class MainWindow(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
list = QListWidget()
list.addItem('111111111111111')
vbox = QVBoxLayout(self)
vbox.addWidget(list)
app = QApplication(sys.argv)
myapp = MainWindow()
myapp.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) 我已经看到了一些使用@ QtCore.Slot装饰器的PySide插槽的示例代码,有些则没有.自己测试一下,它似乎没有什么区别.有没有理由我应该或不应该使用它?例如,在以下代码中:
import sys
from PySide import QtCore
# the next line seems to make no difference
@QtCore.Slot()
def a_slot(s):
print s
class SomeClass(QtCore.QObject):
happened = QtCore.Signal(str)
def __init__(self):
QtCore.QObject.__init__(self)
def do_signal(self):
self.happened.emit("Hi.")
sc = SomeClass()
sc.happened.connect(a_slot)
sc.do_signal()
Run Code Online (Sandbox Code Playgroud)
@ QtCore.Slot装饰器没什么区别; 我可以省略它,调用@ QtCore.Slot(str),甚至@ QtCore.Slot(int),它仍然很好地说,"嗨."
PyQt的pyqtSlot似乎也是如此.
有没有办法将用qtDesigner形成的ui转换为python版本而无需额外的文件?
我正在将Maya用于此UI,并将此UI文件转换为可读的python版本以实现将非常棒!
我刚从PyQt4转到5,我遇到了QtGui的问题.我使用32位Windows安装程序安装,而不是我自己的构建.
当我做:
from PyQt5 import QtGui
Run Code Online (Sandbox Code Playgroud)
我明白了
class MainWindow(QtGui.QMainWindow, UI.MainUI.Ui_MainWindow):
AttributeError: 'module' object has no attribute 'QMainWindow'
Run Code Online (Sandbox Code Playgroud)
所以我试过了
from PyQt5.QtWidgets import QtGui
Run Code Online (Sandbox Code Playgroud)
结果如下:
ImportError: cannot import name QtGui
Run Code Online (Sandbox Code Playgroud)
然后我尝试根据Pyinstaller更改sys.path :ImportError:无法导入名称QtGui工作但它仍然给我相同
ImportError: cannot import name QtGui
Run Code Online (Sandbox Code Playgroud)
更新:看起来我确实导入了QtGui,因为当我进入IDLE并尝试它时,它仍然自动完成QMovie和一大堆其他属性.有什么理由QMainWindow不会在那里吗?(事实并非如此,QDialog也不重要)