MySQL中有一张表table
。鉴于其类型为 ,
如何使列唯一?
我打算在那里插入超过 1000 个字符的文本\des
TEXT
我正在尝试用 phpmyAmdin 来做,但它不起作用。
插入文本时,我会编写这样一个查询,以便它跳过重复的文本:
INSERT IGNORE INTO table...
但它需要 des 列是唯一的
如何清除QFrame
所有小部件?
我在网上找到了一种清理方法:
setParent(None)
但就我而言,这是行不通的。
当您单击“Hello”QFrame
按钮时,应显示 1 个按钮。尝试每次
删除内容并添加,但没有奏效QFrame
insertWidget
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFrame, \
QPushButton, QMainWindow
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.count_of_buttons = 1
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
self.setGeometry(700, 200, 500, 400)
self.button_hello = QPushButton('Hello')
self.button_hello.clicked.connect(self.add_button)
self.layout_buttons = QVBoxLayout()
self.layout_buttons.addStretch() # Это добавит пружину, прижимающую виджеты вверх
self.frame = QFrame()
self.frame.setMinimumSize(200, 200)
self.frame.setFrameStyle(QFrame.Box)
self.frame.setLayout(self.layout_buttons)
self.main_layout = QVBoxLayout(self.centralWidget) # + self.
self.main_layout.addWidget(self.button_hello) # + self.
# self.main_layout.addWidget(self.frame) # -
def add_button(self):
self.main_layout.addWidget(self.frame) # +
self.button = QPushButton(f"Кнопка № {self.count_of_buttons}")
self.button.clicked.connect(lambda ch, btn=self.button: self.pressed_btn(btn))
self.count_of_buttons += 1
self.layout_buttons.insertWidget(0,self.button) # Добавление в начало, с пружиной это прижмет вверх
def pressed_btn(self, btn):
print(f"кнопка нажата: {btn.text()}")
if __name__ == '__main__':
app = QApplication(sys.argv)
form = Example()
form.show()
sys.exit(app.exec_())
如何定义单个按钮的功能?
告诉我如何解决当您单击按钮(已在下方列表中)时显示在控制台中的是最后添加的按钮(其文本)的错误。
根据这个想法,它应该显示被点击的按钮的文本。
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFrame, QPushButton
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.count_of_buttons = 1
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
self.setGeometry(700, 200, 500, 400)
self.button_hello = QPushButton('Hello')
self.button_hello.clicked.connect(self.add_button)
self.layout_buttons = QVBoxLayout()
self.layout_buttons.addStretch() # Это добавит пружину, прижимающую виджеты вверх
self.frame = QFrame()
self.frame.setMinimumSize(200, 200)
self.frame.setFrameStyle(QFrame.Box)
self.frame.setLayout(self.layout_buttons)
main_layout = QVBoxLayout(self.centralWidget)
main_layout.addWidget(self.button_hello)
main_layout.addWidget(self.frame)
def add_button(self):
self.button = QPushButton(f"Кнопка № {self.count_of_buttons}")
self.button.clicked.connect(self.pressed_btn)
self.count_of_buttons += 1
self.layout_buttons.insertWidget(0, self.button) # Добавление в начало, с пружиной это прижмет вверх
def pressed_btn(self):
print(f"кнопка нажата: {self.button.text()}") # выводится постоянно последняя добавленная кнопка
if __name__ == '__main__':
app = QApplication(sys.argv)
form = Example()
form.show()
sys.exit(app.exec())
也许您可以以某种方式按类型访问按钮:
print(QPushButton().text())
告诉我为什么当我们继承时窗口不显示
class MyWidget(QMainWindow):
...
当我们继承自
class MyWidget(QWidget):
...
Работает
:继承自QWidget
:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFrame, QPushButton
from PyQt5.QtWidgets import QApplication, QMainWindow
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.button_hello = QPushButton('Hello')
self.button_hello.clicked.connect(self.add_button)
self.layout_buttons = QVBoxLayout()
self.layout_buttons.addStretch() # Это добавит пружину, прижимающую виджеты вверх
self.frame = QFrame()
self.frame.setMinimumSize(200, 200)
self.frame.setFrameStyle(QFrame.Box)
self.frame.setLayout(self.layout_buttons)
main_layout = QVBoxLayout()
main_layout.addWidget(self.button_hello)
main_layout.addWidget(self.frame)
self.setLayout(main_layout)
def add_button(self):
button = QPushButton('Кнопка')
self.layout_buttons.insertWidget(0, button) # Добавление в начало, с пружиной это прижмет вверх
# self.layout_buttons.addWidget(button) # Добавление в конец, с пружиной это прижмет вниз
app = QApplication([])
mw = MyWidget()
mw.show()
app.exec()
Не работает
:继承自QMainWindow
:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFrame, QPushButton
from PyQt5.QtWidgets import QApplication, QMainWindow
class MyWidget(QMainWindow):
def __init__(self):
super().__init__()
self.button_hello = QPushButton('Hello')
self.button_hello.clicked.connect(self.add_button)
self.layout_buttons = QVBoxLayout()
self.layout_buttons.addStretch() # Это добавит пружину, прижимающую виджеты вверх
self.frame = QFrame()
self.frame.setMinimumSize(200, 200)
self.frame.setFrameStyle(QFrame.Box)
self.frame.setLayout(self.layout_buttons)
main_layout = QVBoxLayout()
main_layout.addWidget(self.button_hello)
main_layout.addWidget(self.frame)
self.setLayout(main_layout)
def add_button(self):
button = QPushButton('Кнопка')
self.layout_buttons.insertWidget(0, button) # Добавление в начало, с пружиной это прижмет вверх
# self.layout_buttons.addWidget(button) # Добавление в конец, с пружиной это прижмет вниз
app = QApplication([])
mw = MyWidget()
mw.show()
app.exec()
PS代码仅在一行上有所不同:
class MyWidget(QWidget или QMainWindow):
我有一个表ttt
,其中有一列名为:second (test)
。抛出语法错误:Syntax Error
因为单词之前的括号test
。
编写 SQL 查询以向该列添加数据的正确方法是什么?
INSERT INTO ttt(first, second (test)) VALUES('{}', '{}')".format(...)
错误:
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(test)) VALUES(... at line 1
桌子:
如何从列表中制作字典?
从
['a 1', 'b 2', 'c 3']
做
{'a': 1, 'b': 2, 'c': 3}
如何使密钥成为字母?
如何显示excel文件的内容?
我使用熊猫和 xlrd。
单元格包含链接,很长的链接。但由于某种原因,它显示的不是完整的链接,而是裁剪的链接(链接后的省略号由 PyCharm 本身显示)。
如何显示excel文件的全部内容?
编码:
import pandas as pd
xl = pd.ExcelFile("Links.xlsx")
a = xl.sheet_names
df = xl.parse("Sheet1")
df.head()
print(df)
结论:
https://autoforum.info/ https://dealers.mercedes-benz.ru/ShowRooms?showroom=autoforum
0 http://www.auto-moscow.ru/ https://avtoforum.kia.ru/
1 http://www.auto-moscow.ru/index.php?showforum=... https://avtoforum.org/
2 http://www.auto-moscow.ru/index.php?showforum=... https://www.facebook.com/mercedes.autoforum/
3 https://automania.ru/forums/ https://www.instagram.com/mbautoforum/
文件内容:
告诉我,为什么无法在 python 中显示列表的元素,还有什么替代方法?
N = 10
a = []
for i in range(1, N-1):
a.append(20)
print(a[i])
错误:
print(a[i])
IndexError: list index out of range
告诉我,如何将图像添加到 sqlite3 数据库?
我在网上找到了一个代码,尝试先插入一个数字,一切正常。
但是当我尝试做同样的事情,但使用图像时,会发生错误:
cur.execute(query)
sqlite3.OperationalError: near "'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x0.........0>
有一个名为 f 的数据库,它有一个名为 foods 的表,它有列:
姓名 | 能源| 照片
至此,在Photo一栏中,我已经指明了STRING类型(我不知道哪个更适合为图片指定)
在Photo一栏中,我想添加一张照片:
import sqlite3
def import_pict_binary(pict_path):
f = open(pict_path, 'rb')
pict_binary = f.read()
return pict_binary
con = sqlite3.connect("f.sqlite")
cur = con.cursor()
binary_pict = import_pict_binary('corn.jpg')
query = "UPDATE foods SET Photo = {} WHERE Name = 'Кукуруза'".format(binary_pict)
cur.execute(query)
con.commit()
告诉我我在请求中错误地指定了什么?
我正在使用 PyQT5。
告诉我关闭窗口后如何执行某个动作?
我应该在哪里写这个条件,如果我关闭它,然后打印一个短语?
例如,显示短语“程序已关闭”:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(458, 170)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(30, 40, 191, 31))
font = QtGui.QFont()
font.setPointSize(11)
self.label.setFont(font)
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(250, 50, 171, 21))
self.lineEdit.setObjectName("lineEdit")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(350, 90, 71, 31))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 458, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(
_translate("MainWindow", "Какое вывести сообщение:"))
self.pushButton.setText(_translate("MainWindow", "Вывести"))
class Example(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.go)
def go(self):
text = self.lineEdit.text()
print(text)
# когда пользователь закроет программу, должно вывестись сообщение: Программа закрыта.
# но как узнать когда он закрыл окно и закрыл ли он его вообще?
if __name__ == '__main__':
application = QApplication(sys.argv)
window = Example()
window.show()
sys.exit(app.exec_())
告诉我,我正在与图书馆datetime
和schedule
.
在某个时间,该功能应该起作用。
为此,我使用schedule
.
我正在使用PyQt5,当我启动这个schedule
窗口时,它会冻结(它说“没有响应”),你不能点击窗口中的按钮。
只是等到它schedule
结束。
该程序的含义是,如果您指定时间(例如14:50)并按下按钮,则程序应在14:50显示一条消息。
因此,我使用schedule
.
但我再说一遍,窗口冻结,但我想在循环进行时按窗口中的其他按钮。14:50
后显示消息,程序挂起,你可以继续点击任何你想要的地方,但是当计划运行到14:50时,你不能点击,一切都冻结了。/
告诉我如何摆脱冻结?
UPDATE(开始,指定比当前时间多1分钟或更多分钟的时间,并等到时间相同:根据莫斯科时间和您指定的时间
import sys
import time
from datetime import datetime
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import uic
import schedule
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(449, 208)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(30, 40, 191, 31))
font = QtGui.QFont()
font.setPointSize(11)
self.label.setFont(font)
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(250, 50, 171, 21))
self.lineEdit.setObjectName("lineEdit")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(340, 130, 75, 23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 449, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "Когда вывести сообщение:"))
self.pushButton.setText(_translate("MainWindow", "Запуститть"))
class Example(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.go)
self.f = False
def write(self):
print('красафчик')
self.f = True
def go(self):
try:
self.t = self.lineEdit.text()
self.datetime_object = datetime.strptime(self.t, '%H:%M')
print(self.datetime_object.time())
print(datetime.now().time())
print(self.datetime_object.time() == datetime.now().time())
if self.datetime_object.time() > datetime.now().time():
schedule.every().day.at(str(self.datetime_object.time())).do(
self.write)
while self.f != True:
print('нет')
schedule.run_pending()
time.sleep(1)
while self.f != True:
if self.datetime_object.time() == datetime.now().time():
schedule.every().day.at(
str(self.datetime_object.time())).do(self.write())
schedule.run_pending()
time.sleep(0.5)
except Exception as e:
print(e)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
告诉我为什么在比较日期时间库中的日期时会显示错误的结果?
import datetime as dt
d = dt.datetime.now().strftime('%d.%m.%Y')
ddate = dt.date(3000, 7, 5)
dd = ddate.strftime('%d.%m.%Y')
print(d)
print(dd)
print(dd > d)
不是比2020多3000吗?
告诉我,用 python 向 yandex 邮件发送消息。
找到了代码,但错误消失了。
我看了,上面写着错误可以起飞,因为密码可能不是utf-8编码。
我写了密码,addr_from,addr_to 的代码:encode(encoding='utf-8') - 零情绪。
告诉我如何修复错误?
import smtplib # Импортируем библиотеку по работе с SMTP
# Добавляем необходимые подклассы - MIME-типы
from email.mime.multipart import MIMEMultipart # Многокомпонентный объект
from email.mime.text import MIMEText # Текст/HTML
addr_from = "foo@yandex.ru"
addr_to = "bar@yandex.ru"
password = "pass" # пароль от почты addr_from
msg = MIMEMultipart() # Создаем сообщение
msg['From'] = addr_from # Адресат
msg['To'] = addr_to # Получатель
msg['Subject'] = 'Тема сообщения' # Тема сообщения
body = "Текст сообщения"
msg.attach(MIMEText(body, 'plain')) # Добавляем в сообщение текст
server = smtplib.SMTP_SSL('smtp.yandex.ru', 465) # Создаем объект SMTP
# server.starttls() # Начинаем шифрованный обмен по TLS
server.login(addr_from, password) # Получаем доступ
server.send_message(msg) # Отправляем сообщение
server.quit() # Выходим
错误:
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Error: authentication failed: This user does not have access rights to this service')
提示问题:
我使用PyQt5 ( QPixmap
),我将照片插入到小部件QLabel
中。
我指定了照片位置的路径,它位于小部件上,但如果我从项目所在的文件夹中删除照片,则相应地没有可打开的内容。
无论这张照片是否在项目文件夹中,如何设置一张照片以使其始终加载?
首先,我进入 project.py 文件夹。我创建了一个文本文档。我在那里写了这些行:
<RCC>
<qresource prefix="main">
<file>photo.jpg</file>
</qresource>
</RCC>
另存为resources.qrc
此外,我在 com. 线:
pyrcc5 -o resources.py resources.qrc
我在主代码中规定import resources
,但照片也没有出现。
照片位于项目文件夹中时的工作代码:
from PyQt5.QtWidgets import QWidget, QLabel
from PyQt5.QtGui import QPixmap
import sys
from PyQt5.QtWidgets import QApplication
class ImageViewer(QWidget):
def __init__(self):
super().__init__()
label = QLabel(self)
pixmap = QPixmap('photo.jpg')
label.setPixmap(pixmap)
self.resize(pixmap.width(), pixmap.height())
self.setWindowTitle('PyQt5 Image Viewer')
if __name__ == '__main__':
app = QApplication(sys.argv)
image_viewer = ImageViewer()
image_viewer.show()
sys.exit(app.exec_())
最初有一个带有字符串的列表。
需要检查至少一个字符串是否是第二个的子字符串(即这个字符串是否以它开头)
spisok = ['a', 'b', 'cd', 'are']
程序应该输出a和are,因为 a是are的子字符串(以a开头)
问:如何循环遍历列表中的每个项目?例如,可以使用循环比较当前与下一个
for i in range(len(spisok)):
if spisok[i].startsith(spisok[i+1]):
...
但是如何比较所有元素呢?