Skip to main content

PyQt Phone Input

PyPI Python License Coverage Build

A clean and modern phone number input widget for PyQt and PySide.

Main

About

The widget features a dropdown to select the country and a text field to input a phone number, both of which are highly customizable. The country dropdown offers exactly the same 235 countries / territories that Google's phone inputs do and displays the selected country's flag as well as its phone code. The flag icons used are modified versions of the icons available on this repository.

Installation

pip install pyqt-phone-input

Example

from PyQt6.QtWidgets import QMainWindow
from pyqt_phone_input import PhoneInput


class Window(QMainWindow):

    def __init__(self):
        super().__init__(parent=None)

        # Phone input
        self.phone_input = PhoneInput(self)
        self.phone_input.setBorderRadius(5)
        self.phone_input.setCountry('us')
        self.phone_input.setPlaceholderText('Phone number')

Documentation

IMPORTANT:
Styling of the widget must not be done by setting the stylesheet manually as the widget calculates the stylesheet itself and overrides it. Use the provided methods such as setBackgroundColor(), setFocusedBackgroundColor() and setDisabledBackgroundColor() instead.

  • Setting the current country:
phone_input.setCountry('us')  # United States
  • Getting the current country:
phone_input.getCountry()  # 'us'
  • Getting the current phone code:
phone_input.getCountryPhoneCode()  # '+1'
  • Getting the phone number:
# country = 'us', input = '1234567'
phone_input.getPhoneNumber()  # '+11234567'
  • Setting the text color:
phone_input.setColor(QColor(0, 0, 0))
  • Setting the background color:
phone_input.setBackgroundColor(QColor(255, 255, 255))
  • Setting the border color:
phone_input.setBorderColor(QColor(0, 0, 0))
  • Setting the border width:
phone_input.setBorderWidth(1)
  • Setting the border radius:
phone_input.setBorderRadius(5)
  • Setting the placeholder text:
phone_input.setPlaceholderText('Phone number')


All methods:

Method Description
getCountry(self) Get the country code of the currently selected country
getCountryPhoneCode(self) Get the phone code of the currently selected country
setCountry(self, country: str) Set the current country (by country code)
getPhoneNumber(self) Get the phone number (Returns country code and number from text field without any spaces)
setInput(self, input_number: str) Set the text field's input
getPlaceholderText(self) Get the text field's current placeholder text
setPlaceholderText(self, text: str) Set the text field's current placeholder text
isDisabled(self) Get whether the widget is currently disabled
setDisabled(self, disabled: bool) Set whether the widget should be disabled
setColor(self, color: QColor) Set the regular color of the text
setBackgroundColor(self, color: QColor) Set the regular color of the background
setBorderColor(self, color: QColor) Set the regular color of the border
setBorderWidth(self, width: int) Set the width of the border
setBorderRadius(self, radius: int) Set the radius of the border
setPadding(self, padding: QMargins) Set the padding of the text field
setFocusedColor(self, color: QColor) Set the text color for when the widget is focused
setFocusedBackgroundColor(self, color: QColor) Set the background color for when the widget is focused
setFocusedBorderColor(self, color: QColor) Set the border color for when the widget is focused
setDisabledColor(self, color: QColor) Set the text color for when the widget is disabled
setDisabledBackgroundColor(self, color: QColor) Set the background color for when the widget is disabled
setDisabledBorderColor(self, color: QColor) Set the border color for when the widget is disabled
setTextSelectionForegroundColor(self, color: QColor) Set the foreground color of the text field's selection
setTextSelectionBackgroundColor(self, color: QColor) Set the background color of the text field's selection
isDropdownItemHeightDynamic(self) Get whether the dropdown item height is dynamic (always the same height as the widget)
setDropdownItemHeightDynamic(self, dynamic: bool) Set whether the dropdown item height should be dynamic (always the same height as the widget)
setDropdownItemHeight(self, height: int) Set the dropdown item height (will only be used if dynamic height is disabled)
setDropdownItemSelectionForegroundColor(self, color: QColor) Set the foreground color of the selected dropdown item
setDropdownItemSelectionBackgroundColor(self, color: QColor) Set the background color of the selected dropdown item
setDropdownBorderColor(self, color: QColor) Set the border color of the dropdown window
setFont(self, font: QFont) Set the font used by text field and phone code of currently selected country
setDropdownFont(self, font: QFont) Set the font used for the dropdown items

Countries

Country Code Country / Territory Phone Code
af Afghanistan +93
al Albania +355
dz Algeria +213
as American Samoa +1
ad Andorra +376
ao Angola +244
ai Anguilla +1
ag Antigua and Barbuda +1
ar Argentina +54
am Armenia +374
aw Aruba +297
sh-ac Ascension Island +247
au Australia +61
at Austria +43
az Azerbaijan +994
bs Bahamas +1
bh Bahrain +973
bd Bangladesh +880
bb Barbados +1
by Belarus +375
be Belgium +32
bz Belize +501
bj Benin +229
bm Bermuda +1
bt Bhutan +975
bo Bolivia +591
ba Bosnia and Herzegovina +387
bw Botswana +267
br Brazil +55
io British Indian Ocean Territory +246
vg British Virgin Islands +1
bn Brunei +673
bg Bulgaria +359
bf Burkina Faso +226
bi Burundi +257
kh Cambodia +855
cm Cameroon +237
ca Canada +1
cv Cape Verde +238
bq Caribbean Netherlands +599
ky Cayman Islands +1
cf Central African Republic +236
td Chad +235
cl Chile +56
cn China +86
co Colombia +57
km Comoros +269
cg Congo - Brazzaville +242
cd Congo - Kinshasa +243
ck Cook Islands +682
cr Costa Rica +506
ci Côte d'Ivoire +225
hr Croatia +385
cu Cuba +53
cw Curaçao +599
cy Cyprus +357
cz Czechia +420
dk Denmark +45
dj Djibouti +253
dm Dominica +1
do Dominican Republic +1
ec Ecuador +593
eg Egypt +20
sv El Salvador +503
gq Equatorial Guinea +240
er Eritrea +291
ee Estonia +372
sz Eswatini +268
et Ethiopia +251
fk Falkland Islands +500
fo Faroe Islands +298
fj Fiji +679
fi Finland +358
fr France +33
gf French Guiana +594
pf French Polynesia +689
ga Gabon +241
gm Gambia +220
ge Georgia +995
de Germany +49
gh Ghana +233
gi Gibraltar +350
gr Greece +30
gl Greenland +299
gd Grenada +1
gp Guadeloupe +590
gu Guam +1
gt Guatemala +502
gn Guinea +224
gw Guinea-Bissau +245
gy Guyana +592
ht Haiti +509
hn Honduras +504
hk Hong Kong +852
hu Hungary +36
is Iceland +354
in India +91
id Indonesia +62
ir Iran +98
iq Iraq +964
ie Ireland +353
il Israel +972
it Italy +39
jm Jamaica +1
jp Japan +81
jo Jordan +962
kz Kazakhstan +7
ke Kenya +254
ki Kiribati +686
xk Kosovo +383
kw Kuwait +965
kg Kyrgyzstan +996
la Laos +856
lv Latvia +371
lb Lebanon +961
ls Lesotho +266
lr Liberia +231
ly Libya +218
li Liechtenstein +423
lt Lithuania +370
lu Luxembourg +352
mo Macao +853
mg Madagascar +261
mw Malawi +265
my Malaysia +60
mv Maldives +960
ml Mali +223
mt Malta +356
mh Marshall Islands +692
mq Martinique +596
mr Mauritania +222
mu Mauritius +230
mx Mexico +52
fm Micronesia +691
md Moldova +373
mc Monaco +377
mn Mongolia +976
me Montenegro +382
ms Montserrat +1
ma Morocco +212
mz Mozambique +258
mm Myanmar +95
na Namibia +264
nr Nauru +674
np Nepal +977
nl Netherlands +31
nc New Caledonia +687
nz New Zealand +64
ni Nicaragua +505
ne Niger +227
ng Nigeria +234
nu Niue +683
nf Norfolk Island +672
kp North Korea +850
mk North Macedonia +389
mp Northern Mariana Islands +1
no Norway +47
om Oman +968
pk Pakistan +92
pw Palau +680
ps Palestine +970
pa Panama +507
pg Papua New Guinea +675
py Paraguay +595
pe Peru +51
ph Philippines +63
pl Poland +48
pt Portugal +351
pr Puerto Rico +1
qa Qatar +974
re Réunion +262
ro Romania +40
ru Russia +7
rw Rwanda +250
ws Samoa +685
sm San Marino +378
st São Tomé & Príncipe +239
sa Saudi Arabia +966
sn Senegal +221
rs Serbia +381
sc Seychelles +248
sl Sierra Leone +232
sg Singapore +65
sx Sint Maarten +1
sk Slovakia +421
si Slovenia +386
sb Solomon Islands +677
so Somalia +252
za South Africa +27
kr South Korea +82
ss South Sudan +211
es Spain +34
lk Sri Lanka +94
bl St. Barthélemy +590
sh-hl St. Helena +290
kn St. Kitts & Nevis +1
lc St. Lucia +1
mf St. Martin +590
pm St. Pierre & Miquelon +508
vc St. Vincent & Grenadines +1
sd Sudan +249
sr Suriname +597
se Sweden +46
ch Switzerland +41
sy Syria +963
tw Taiwan +886
tj Tajikistan +992
tz Tanzania +255
th Thailand +66
tl Timor-Leste +670
tg Togo +228
tk Tokelau +690
to Tonga +676
tt Trinidad & Tobago +1
tn Tunisia +216
tr Türkiye +90
tm Turkmenistan +993
tc Turks & Caicos Islands +1
tv Tuvalu +688
vi U.S. Virgin Islands +1
ug Uganda +256
ua Ukraine +380
ae United Arab Emirates +971
gb United Kingdom +44
us United States +1
uy Uruguay +598
uz Uzbekistan +998
vu Vanuatu +678
va Vatican City +39
ve Venezuela +58
vn Vietnam +84
wf Wallis & Futuna +681
ye Yemen +967
zm Zambia +260
zw Zimbabwe +263

License

This software is licensed under the MIT license.

Metadata

Release files for pyqt-phone-input 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyqt-phone-input 1.0.2
File Size Uploaded
pyqt-phone-input-1.0.2.tar.gz 4.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyqt-phone-input 1.0.2
File Interpreter ABI Platform
pyqt_phone_input-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 8.8 MB

Release files / pyqt-phone-input-1.0.2.tar.gz

Download URL pyqt-phone-input-1.0.2.tar.gz
Size 4.4 MB
Tags Source
SHA-256 checksum
How to use checksums
9339971ec554d9fe20d8f00a7726cea65c107ea00a35a01c7d91df054b8897c3
BLAKE2b-256 checksum
How to use checksums
ad11cca76b028d2e7de0e10ce4cf262b1f59abe468f6ea656b6719e2e9080340
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.3

Release files / pyqt_phone_input-1.0.2-py3-none-any.whl

Download URL pyqt_phone_input-1.0.2-py3-none-any.whl
Size 4.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
d04e96b9f3978703ffdc3572ca6152d5c1794921419d5a9831bd6faa7b74798b
BLAKE2b-256 checksum
How to use checksums
b70a5e7984794e923a1b112e83f3f4ff99ed0804836b2d8444f6b25c30413578
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.3

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page