试图用PIL 创建一个透明的gif.到目前为止我有这个:
from PIL import Image
img = Image.new('RGBA', (100, 100), (255, 0, 0, 0))
img.save("test.gif", "GIF", transparency=0)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现的一切都是指操纵现有图像来调整透明度设置或将透明图像叠加到另一个上.我只想创建一个透明的GIF(然后绘制).
我正在使用QT设计器构建UI,并希望按钮使用不同的修改器执行不同的操作.所以我认为我可以使用动态字符串属性来调用函数,这些属性将根据修饰符执行操作.
如果有人知道更简单的方法,我会非常感激.
是否可以将Combobox设置为知道Item的文本值的项目.我试图避免循环for i in range(myCombobox.count())
只是为了找到一个Item的索引,所以它可以用来设置一个组合框到该项的索引.
我最近才开始编程和Python(PyQt).我有我的主要QMainWindow
课程.但我想将它与UI小部件分开,以便所有窗口内容(菜单,工具栏,常用按钮)都在QMainWindow
,但所有程序/ UI特定的小部件(pusgbuttons,组合框,图像,复选框等)都在一个单独的QWidget
类中.但我不确定我是否正确行事.
我是这样做的:
class MyMainWindow(QMainWindow):
def __init__(self, parent = None):
super(MyMainWindow, self).__init__(parent)
self.main_widget = QWidget(self)
...
self.form_widget = FormWidget(self)
#This is my UI widget
self.main_layout = QVBoxLayout(self.main_widget)
self.main_layout.sizeConstraint = QLayout.SetDefaultConstraint
self.main_layout.addWidget(self.form_widget.main_widget)
#form_widget has its own main_widget where I put all other widgets onto
self.main_widget.setLayout(self.main_layout)
self.setCentralWidget(self.main_widget)
Run Code Online (Sandbox Code Playgroud)
你有什么建议将代码分成小块?怎么做得更好?或者对于UI来说,它们都可以在一个大的地方?我应该将UI代码/类分解为单独的文件吗?
谢谢.
[解决了]
我发现了我的错误 - 我从UI小部件类中删除了main_widget(现在所有UI小部件都直接放在UI类小部件本身上)并且只执行此操作:
self.main_layout.addWidget(self.form_widget)
Run Code Online (Sandbox Code Playgroud)
没有菜单的问题
我正在做一个关于盒子布局的PyQt4教程.但我不明白它是如何addStretch
运作的.
vbox.addStretch(1)
和hbox.addStretch(1)
,则两个按钮显示在右下方.为什么? vbox.addStretch(1)
和hbox.addStretch(1)
退出,两个按钮出现在我的窗口中央,它们可以水平变形,但不能垂直变形.为什么? 以下是我正在使用的代码:
import sys
from PyQt4 import QtGui
class BoxLayout(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setWindowTitle('box layout')
ok = QtGui.QPushButton("OK")
cancel = QtGui.QPushButton("Cancel")
vbox = QtGui.QHBoxLayout()
vbox.addStretch(1)
vbox.addWidget(ok)
vbox.addWidget(cancel)
hbox = QtGui.QVBoxLayout()
hbox.addStretch(1)
hbox.addLayout(vbox)
self.setLayout(hbox)
self.resize(100, 100)
app = QtGui.QApplication(sys.argv)
qb = BoxLayout()
qb.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) 根据条件,我想将按钮连接/重新连接到不同的功能.
假设我有一个按钮:
myButton = QtGui.QPushButton()
Run Code Online (Sandbox Code Playgroud)
对于这个例子,假设我检查是否有互联网连接.
if connected == True:
myButton.clicked.connect(function_A)
elif connected == False:
myButton.clicked.connect(function_B)
Run Code Online (Sandbox Code Playgroud)
首先,我想在重新分配/重新连接到另一个功能(function_A或function_B)之前断开按钮与已连接的任何功能的连接.其次,我已经注意到重新连接按钮后,需要额外点击按钮才能获得新功能.按钮重新连接到另一个功能后,它仍然会尝试运行上一个功能 - 一个按钮之前连接的功能(重新连接之前).请指教.提前致谢!
看起来小部件的.disconnect()方法可用于断开按钮与其连接的功能的连接.
myButton.disconnect()
Run Code Online (Sandbox Code Playgroud)
不幸的是.如果小部件没有连接到任何功能,.disconnect()会抛出错误.为了解决这个问题,我使用了Try/Except.但我宁愿使用更优雅的解决方案......
try: myButton.clicked.disconnect()
except Exception: pass
Run Code Online (Sandbox Code Playgroud) 以下是我的代码的一部分,它发送了一封电子邮件:
servidor = smtplib.SMTP()
servidor.connect(HOST, PORT)
servidor.login(user, usenha)
assunto = str(self.lineEdit.text())
para = str(globe_email)
texto = self.textEdit.toPlainText()
textos = str(texto)
corpo = MIMEText(textos.encode('utf-8'), _charset='utf-8')
corpo['From'] = user
corpo['To'] = para
corpo['Subject'] = assunto
servidor.sendmail(user, [para], corpo.as_string())
Run Code Online (Sandbox Code Playgroud)
除了主题部分外,一切都很好.当我尝试发送带有特殊字符的字符串(例如"ação")时,会引发此错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
如何在MIMEText的主题中发送带有特殊字符的电子邮件?
我使用的是Windows 7和Python 3.4.3.我想在浏览器中运行这个简单的helloworld.py文件:
print('Content-Type: text/html')
print( '<html>')
print( '<head></head>')
print( '<body>')
print( '<h2>Hello World</h2>')
print( '</body></html>')
Run Code Online (Sandbox Code Playgroud)
我所做的是:
1)转到命令行C:\Python
(安装python的地方)
2)运行: python -m http.server
3)到Firefox并输入 http://localhost:8000/hello.py
但是,浏览器只打印hello.py文件的内容,而不是"Hello World".
我该如何解决?
我有一个固定宽度的QLabel.
我需要(定期)检查整个字符串是否适合当前宽度的QLabel内部,因此我可以适当调整它的大小.
为此,我需要获取字符串的"像素长度".
(显示字符串所需的水平像素总数).
应该注意的是,QLabel的点大小永远不会改变.
我不能简单地检查存在的字符数量,因为有些字符是下标/上标,并且对整个字符串的宽度有不同的贡献.
(这就是说像素宽度和字符数量之间没有简单的关系)
这有什么抽象的,超级便利的功能吗?
规格:
Python 2.7.1
PyQt4
Windows 7
我正在OSX Mavericks上编写新手Qt5代码,并且想要覆盖给定小部件的StyleSheet的一个属性:值对.
如果我运行以下自包含的演示代码:
#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QPushButton>
int
main( int argc, char *argv[] ) {
QApplication app( argc, argv );
QMainWindow* mw = new QMainWindow();
QPushButton* AButton = new QPushButton( "A Button", mw );
mw->show();
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
我得到了一个很好的按钮,默认为Macintosh风格 - 圆角,按下时标准OSX-蓝色等:
但是,如果我设置样式表以使背景按钮颜色为红色,那么在此过程中我似乎失去了所有其他OSX样式默认值 - 没有更多的圆角,标准边距等:
#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QPushButton>
int
main( int argc, char *argv[] ) {
QApplication app( argc, argv );
QMainWindow* mw = new QMainWindow();
QPushButton* AButton = new QPushButton( "A …
Run Code Online (Sandbox Code Playgroud) python ×9
pyqt ×6
pyqt4 ×3
layout ×2
pyqt5 ×2
python-3.x ×2
cgi ×1
click ×1
disconnect ×1
email ×1
gif ×1
http ×1
imaging ×1
modifier-key ×1
qboxlayout ×1
qcombobox ×1
qlabel ×1
qmainwindow ×1
qpushbutton ×1
qt ×1
qt5 ×1
transparency ×1
unicode ×1
utf-8 ×1
width ×1