我打算使用PyQt来控制服务器端的嵌入式WebKit浏览器.
我在WebKit中运行的HTML页面中的Javascript中有一些继承应用程序逻辑.
我怎么能用Javascript从主机进程(Python,PyQt)进行通信呢
我可以在页面内调用Javascript函数
Python方法暴露给Javascript,可以使用参数从Javascript调用
我有一个PySide GUI应用程序(用Python 3编写,在Windows 7 Pro上运行),我在其中设置应用程序图标如下:
class MyGui(QtGui.QWidget):
def __init__(self):
super(MyGui, self).__init__()
...
self.setWindowIcon(QtGui.QIcon('MyGui.ico'))
if os.name == 'nt':
# This is needed to display the app icon on the taskbar on Windows 7
import ctypes
myappid = 'MyOrganization.MyGui.1.0.0' # arbitrary string
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
...
Run Code Online (Sandbox Code Playgroud)
我ctypes从这个答案得到了那些东西.如果我删除这些行,那么当我执行时,Python图标会显示在任务栏中python MyGui.py.
包含这些行后,一切看起来都很棒,窗口和任务栏上都有正确的图标.但是,当我使用cxfreeze打包gui时,窗口和任务栏图标都会更改为通用windows .exe图标.
我正在使用此处cxfreeze.bat的说明打包应用程序,包括交换机.使用该开关可以使生成的exe在资源管理器中查看时具有正确的图标.但是,应用程序窗口和任务栏在我启动应用程序时不会显示图标.我已经尝试将.ico文件复制到与.exe相同的目录,但这没有帮助.--icon
我在Windows 7和8上都有相同的行为.奇怪的是,如果我将应用程序固定到任务栏,任务栏图标会正确显示,但窗口图标仍然是通用exe图标.
如何正确显示图标?
嘿,我对Pyside很新,不知道如何下载或Qt?我有一台64位的Windows计算机,我想知道下载Qt后我需要下载什么,因为有一个Qt 5.3,Qt 5.2.1等的清单,我不知道下载哪个,因为那里有那些它们下面有多个选项,如MSCV2012 64位和mscv64位OpenGL.基本上我只是迷失在我需要的东西上,似乎无法找到答案.有人可以开导我吗?
谢谢!
我正在使用PySide开发一个计算机应用程序,我正在使用QTableWidget.假设我的表有3列,但它们包含的数据非常不同,例如(对于每一行)第一列中的长句,然后是最后两列中的3位数字.我想让我的表调整大小以便根据数据调整其大小,或者至少能够将列大小设置为(例如)可用空间的70/15/15%.
做这个的最好方式是什么 ?
我table.horizontalHeader().setResizeMode(QHeaderView.Stretch)在阅读完这个问题之后尝试过,但它会生成相同大小的3列.
我还要table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)感谢Fabio的评论,但它没有根据需要填补所有可用空间.
无论是Interactive,Fixed,Stretch,ResizeToContents从QHeaderView文档似乎给我我需要什么(见第二编辑).
任何帮助将不胜感激,即使它是Qt/C++!非常感谢你.
编辑:我找到了一种解决方法,但它仍然不是我想要的:
header = table.horizontalHeader()
header.setResizeMode(QHeaderView.ResizeToContents)
header.setStretchLastSection(True)
Run Code Online (Sandbox Code Playgroud)
如果存在一种setStretchFirstSection方法会更好,但不幸的是似乎没有一种方法.
编辑2:
表中唯一可以修改的是最后一列,用户可以在其中输入一个数字.红色箭头表示我想要的东西.
我在Qt设计器中创建了一个简单的表单,并尝试将其加载到我正在使用PySide创建但没有太多运气的Qt应用程序中.
这是'pyside-uic'生成的代码:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'clientEditorForm.ui'
#
# Created: Tue Nov 3 23:46:41 2009
# by: PySide uic UI code generator
#
# WARNING! All changes made in this file will be lost!
from PySide import QtCore, QtGui
class Ui_clientEditorForm(object):
def setupUi(self, clientEditorForm):
clientEditorForm.setObjectName("clientEditorForm")
clientEditorForm.resize(575, 446)
self.horizontalLayout_3 = QtGui.QHBoxLayout(clientEditorForm)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.splitter = QtGui.QSplitter(clientEditorForm)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setObjectName("splitter")
self.layoutWidget = QtGui.QWidget(self.splitter)
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout = QtGui.QVBoxLayout(self.layoutWidget)
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout_2 = QtGui.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.searchLabel = QtGui.QLabel(self.layoutWidget) …Run Code Online (Sandbox Code Playgroud) 我决定学习Python Gui开发,因为PyQt是非自由的,所以选择PySide就可以了.但是,与PyQt不同,PySide没有任何教程或截屏,只是文档对初学者来说没用.我没有Qt经验,所以即使在Ubuntu中设置开发环境也是一个问题.你能建议一些可以借鉴的东西吗?
我想创建一个具有子窗口小部件的窗口小部件,我可以动态更改它.这是我尝试过的:
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class Widget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setLayout(QVBoxLayout())
self.child = QLabel("foo", self)
self.layout().addWidget(self.child)
def update(self):
self.layout().removeWidget(self.child)
self.child = QLabel("bar", self)
self.layout().addWidget(self.child)
app = QApplication(sys.argv)
widget = Widget()
widget.show()
widget.update()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
问题是,这实际上并没有在视觉上删除"foo"标签.它仍然呈现在"酒吧"之上.问题的屏幕截图.如何删除旧窗口小部件以便仅显示新窗口小部件?
我知道我可以更改标签的text属性.这不是我想要的应用程序,我需要更改实际的小部件(到不同的小部件类型).
我正在使用pyside(qt)开发一个桌面应用程序,我想访问(迭代)QWidget的所有行编辑组件.在qt中我发现了两个方法findChild和findChildren,但没有找到正确的例子,我的代码显示错误,'form'对象没有属性'findChild'. 这里的'形式'是Qwidget表单,包括组件lineEdit,comboboxes,Qpushbuttons等.
码:
lineEdits = form.findChild<QLineEdit>() //This is not working
lineEdits = form.findChild('QLineEdit) //This also not working
Run Code Online (Sandbox Code Playgroud) 我有这个问题,如果我尝试在我的使用Pyqt/Pyside的python文件上运行py2exe我尝试运行在I:\ Documents\Python\Buttonio_Testio\dist中生成的EXE时会出现以下错误:
I:\Documents\Python\Buttonio_Testio\dist>Package.exe
Traceback (most recent call last):
File "Package.py", line 1, in <module>
File "PySide\__init__.pyc", line 55, in <module>
File "PySide\__init__.pyc", line 11, in _setupQtDirectories
File "PySide\_utils.pyc", line 87, in get_pyside_dir
File "PySide\_utils.pyc", line 83, in _get_win32_case_sensitive_name
File "PySide\_utils.pyc", line 58, in _get_win32_short_name
WindowsError: [Error 3] The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)
from distutils.core import setup
import py2exe
setup(console=['Package.py'])
My program, in Package.py looks like this:
from PySide.QtCore import *
from PySide.QtGui import *
import …Run Code Online (Sandbox Code Playgroud) 我知道C或C++中静态和动态链接的区别.但它在Python中意味着什么?由于它只是一个解释器,并且只有一种模式的导入机制,这有什么意义呢?
如果我通过排除特定库来使用cx_freeze冻结我的Python应用程序,它是一种动态链接吗?因为,用户必须自己下载并安装该库才能运行我的应用程序.
实际上我的问题是,我正在使用PySide库(使用LGPL v2.1)来开发Python GUI应用程序.图书馆说我应该动态链接到图书馆以遵守他们的法律条款(与Qt相同).在这种情况下,如何动态链接到PySide?