2 V( Z4 f) C; B& T8 i1 C7 Q\# -*- coding: utf-8 -*-6 O2 d, [. V# s& H0 m& C4 b
" o' u5 t' r' J, @6 S+ A; ^2 ~
\# Form implementation generated from reading ui file 'Weather.ui' 1 i/ i* n* D$ T! z3 K% m& [3 K, j+ F$ {1 f, E; P
\# : U7 b) g0 @' _: R1 c0 [! I. H# S6 ^
\# Created by: PyQt5 UI code generator 5.15.4; q) y- B( |, W* a5 K5 U, d
) n# K( m( {4 }" i0 x2 g$ [$ B\# + c. C( ]$ @, N' c o n; S( k. F6 c2 Y/ E: r% B9 A\# WARNING: Any manual changes made to this file will be lost when pyuic5 is: W, b$ `; m6 A; C" ]3 t
* y1 U# p8 g- Z; l# q
\# run again. Do not edit this file unless you know what you are doing. % V; K! S; c8 \& \$ s7 ?' l% R. s6 o5 }7 ~5 l
from PyQt5 import QtCore, QtGui, QtWidgets$ n, L5 a: o2 K0 S5 h# Y
5 ?8 k3 Q. f# [# P
class Ui_Dialog(object):, N; U( `0 b0 K5 K0 Z: H
$ B& x% B) i8 \6 g' u- w& I
def setupUi(self, Dialog): 5 A( S8 \+ e% X$ d* H0 ?" k& c9 _ j# O. `
Dialog.setObjectName("Dialog")- Z$ ~- u' O8 E# M% L/ ^3 ]0 D; P
K* K8 d0 x( e) _6 a* p Dialog.resize(600, 600)- D1 U4 G# R8 { n. i; J4 l
. g% w+ B. J7 V( ?8 d$ n Y7 _
self.groupBox = QtWidgets.QGroupBox(Dialog) . u' p+ ]8 |) u9 h. m( G6 { ( r2 ^- L" ^, ~: @* u self.groupBox.setGeometry(QtCore.QRect(30, 20, 551, 511)) s9 ~* M" r. y/ L0 n
% |" w+ i J7 Y+ _0 w2 N) a. f& U self.groupBox.setObjectName("groupBox")1 }# f0 W% S$ U7 u! }. A4 A+ J+ @
- X" R0 G4 F9 | self.label_2 = QtWidgets.QLabel(self.groupBox), v" N" U& Y( o5 k6 S0 Z4 ~
7 k) y! D4 F3 n* q% B y3 J
self.label_2.setGeometry(QtCore.QRect(20, 30, 31, 16))6 W$ Q4 z! q8 a R! O
; j( z8 V2 O& B) D* n
self.label_2.setObjectName("label_2")7 v+ w0 s* _/ a# v+ q+ _( w1 \
% V) g; O2 h1 f7 N1 J
self.comboBox = QtWidgets.QComboBox(self.groupBox)4 _ B$ i/ j# }
! A9 a* m( g7 ~' L
self.comboBox.setGeometry(QtCore.QRect(70, 30, 87, 22)) 1 O/ `9 Q( w: V 0 o8 u1 ~! A3 a9 N+ \ self.comboBox.setObjectName("comboBox") . l5 J5 _$ q$ U0 Y! x: |) m0 N( j' \ @
self.comboBox.addItem("") . x1 x) ?9 v. Y) |) _3 _- W4 q/ Q & D2 F6 n0 E& o. }" I; @# D+ m self.comboBox.addItem("") ( b) }' D7 i7 h / S9 v- a; V3 ]# U' g5 x6 J+ e X self.comboBox.addItem("") / d' k8 _" a. L# W; d. [8 z) N3 e
self.textEdit = QtWidgets.QTextEdit(self.groupBox)" S: |% i6 ]0 [! w: D+ T
9 s8 u- p+ J: Q0 x+ k$ T# V/ B self.textEdit.setObjectName("textEdit") ! @2 D* F3 q F, O/ i* K Z / m& F7 L$ Z* {# m/ k' K self.queryBtn = QtWidgets.QPushButton(Dialog)# }6 s$ {4 @$ q% @% W L
0 F1 u& N, ^' v% t8 G self.queryBtn.setGeometry(QtCore.QRect(490, 560, 93, 28)) , H1 P3 @0 \; H4 M% k y 4 a1 o, f9 f1 X8 V1 x6 l; B A self.queryBtn.setObjectName("queryBtn")2 `2 @+ A! N# G B& P
+ l; u& ]' ~. n% C' S self.clearBtn = QtWidgets.QPushButton(Dialog) ; L2 L& H$ X# _7 _9 K 1 ~' g5 i0 R, I q2 v self.clearBtn.setGeometry(QtCore.QRect(30, 560, 93, 28)) ; f9 R7 H1 S* l% e2 W! M! ?) G4 H% h9 F Z5 r/ M! r1 U
self.clearBtn.setObjectName("clearBtn") 2 g* f& p! U' q+ r) y. Y% O0 b: r% b/ G* D7 r4 ~ j: M
self.retranslateUi(Dialog)% @- G3 L; |9 A3 l7 C2 R
% d6 Q6 i% @, r
self.clearBtn.clicked.connect(Dialog.clearText) ; M) H6 \; w$ V4 ~3 M7 f0 Y! Y3 J d8 c: R
self.queryBtn.clicked.connect(Dialog.queryWeather) ( B' z0 y# v+ H: y8 C1 u; S' @6 U3 i+ m5 |% v5 J# Y" [
QtCore.QMetaObject.connectSlotsByName(Dialog)' b+ n. Q+ q2 ^1 Q, B" d' C( i
" a+ F$ Z' }0 w X/ z* D T
def retranslateUi(self, Dialog):2 U2 P4 Y _7 Y2 q$ l( W: Y+ D. U9 X
6 B* [) U/ U* T% Q+ }( |2 | _translate = QtCore.QCoreApplication.translate' } y# @2 O0 g! K
( N* Z9 I% ~( A5 M
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))$ u |+ U5 \% h O6 q
- B6 W( { G% Z" \$ w1 W5 Z
self.groupBox.setTitle(_translate("Dialog", "城市天气预报")) : V/ b' H3 E, i4 E8 P8 _" W8 S$ U3 z- ~
self.label_2.setText(_translate("Dialog", "城市"))& i/ L8 i" v6 ^
9 Y+ r( j( X( R self.comboBox.setItemText(0, _translate("Dialog", "北京"))& e4 n: o: i. Y
& M1 ?9 x# a% \. K5 i3 s4 t9 V0 O self.comboBox.setItemText(1, _translate("Dialog", "苏州")) 1 F. P2 p# |* v1 G! e* A, X |8 j% H% K9 D" C: X. j; @
self.comboBox.setItemText(2, _translate("Dialog", "上海")) ' q6 L: ^% v$ H 8 T9 |$ s1 v2 U$ } y self.queryBtn.setText(_translate("Dialog", "查询"))9 o& A& S0 i7 Q4 {) Q: Z
: [9 B& x5 y5 w7 U% M6 h' j' P8 C% _1 V self.clearBtn.setText(_translate("Dialog", "清空"))6 i- M N6 j, h
3 ]* ?8 ]; U* `4 z8 g! N
3、调用MainDialog ; O7 a! j. }8 W* D ) _ T/ a& s/ W在MainDialog中调用界面类Ui_Dialog,然后在其中中添加查询天气的业务逻辑代码,这样就做到了界面显示和业务逻辑的分离。新增demo.py文件, 在MainDialog类中定义了两个槽函数queryWeather()和clearText(),以便在界面文件Weather.ui中定义的两个按钮(queryBtn 和clearBtn) 触发clicked 信号与这两个槽函数进行绑定。 0 m& D0 |: F$ s7 @1 ]5 r9 |& S8 Q" {% G( ?2 Y3 ~, k6 c
完整代码如下:; d/ g2 F* v0 V5 d
, ?$ d" @: C9 ^* E& M8 p0 n9 Z
import sys/ T: l: m$ n c# N3 e5 z" _
/ d5 a( C6 w* F% V# {- y' }* Oimport Weather( U- a- _" l l2 \0 \3 V: M( Q# D
) Z H3 x6 ]3 K2 @( p: m8 e
from PyQt5.QtWidgets import QApplication, QDialog+ z- F1 b- q/ t. Q2 l: T
" l. T8 u3 n! @# f& w( Qimport requests' `+ E" l. I+ o0 b5 W3 v